外键引用

时间:2014-08-06 09:02:47

标签: sql oracle

自从我创建数据库以来,你将不得不原谅我。

我创建了下表;

CREATE TABLE Counties (
    CountID VARCHAR(10) PRIMARY KEY,
    Countyname CHAR(10)
);

现在我想创建第二个;

CREATE TABLE STAFF (
    RepID VARCHAR(10) PRIMARY KEY,
    Surname CHAR(10),
    foreign key (CountID) references Counties(CountID)
);

但是我得到了;

CREATE TABLE STAFF (RepID VARCHAR(10) PRIMARY KEY , Surname CHAR(10),
foreign key (CountID) references Counties(CountID)) Error at Command
Line : 1 Column : 84 Error report - SQL Error: ORA-00904: "COUNTID":
invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

我已经四处寻找并阅读了它,因为你想要引用的内容并不存在。

然而;

DESCRIBE COUNTIES;

 Name       Null      Type         
----------  --------  ------------  
COUNTID     NOT NULL  VARCHAR2(10)  
COUNTYNAME            CHAR(10)

1 个答案:

答案 0 :(得分:2)

您必须先指定该字段。现在,您只在不存在的字段上创建FK。该语句应定义该字段,并分别定义外键:

CREATE TABLE STAFF (
  RepID VARCHAR(10) PRIMARY KEY , 
  Surname CHAR(10), 
  CountID VARCHAR(10),
  foreign key (CountID) references Counties(CountID));

有一种简短的语法可以让你将它们组合起来。但它略有不同,它实际上将FK添加到现场声明中(感谢ypercube)。它仍然需要字段类型,但允许您在字段声明后添加缩短的FK声明:

CREATE TABLE STAFF (
  RepID VARCHAR(10) PRIMARY KEY , 
  Surname CHAR(10), 
  CountID VARCHAR(10) references Counties(CountID));