自从我创建数据库以来,你将不得不原谅我。
我创建了下表;
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)
答案 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));