Oracle 使用外键创建表失败,ORA-00905:缺少关键字
每当我尝试引用外键时,就会出现此错误(缺少关键字) 这是我的密码:Oracle 使用外键创建表失败,ORA-00905:缺少关键字,oracle,foreign-keys,constraints,ddl,Oracle,Foreign Keys,Constraints,Ddl,每当我尝试引用外键时,就会出现此错误(缺少关键字) 这是我的密码: CREATE TABLE SP ( S# CHAR(2) NOT NULL, P# CHAR(2) NOT NULL, QTY INTEGER, PRIMARY KEY (S#,P#), FOREIGN KEY (S#) REFERENCE Supplier(S#) ON DELETE CASCADE ); 您的代码有几个问题: 主键定义的语法错误;它应该是约束主键(S#,P#) 在外键定义中,关键字RE
CREATE TABLE SP (
S# CHAR(2) NOT NULL,
P# CHAR(2) NOT NULL,
QTY INTEGER,
PRIMARY KEY (S#,P#),
FOREIGN KEY (S#) REFERENCE Supplier(S#) ON DELETE CASCADE
);
您的代码有几个问题:
- 主键定义的语法错误;它应该是约束主键(S#,P#)
- 在外键定义中,关键字
缺少最后的REFERENCES
S
CREATE TABLE SP (
S# CHAR(2) NOT NULL,
P# CHAR(2) NOT NULL,
QTY INTEGER,
CONSTRAINT SP_PK PRIMARY KEY (S#, P#),
FOREIGN KEY (S#) REFERENCES Supplier(S#) ON DELETE CASCADE
);
提醒:请注意,主键引用的列必须是唯一的或引用表中的主键(即列
S
必须是表Supplier
的主键或具有unique
约束)。列CHAR
应使用标准类型VARCHAR2
,或者甚至可能是INTEGER
(尽管父表可能也犯了同样的错误,因此也需要更改)。如果将FK声明为列的一部分,而不是在末尾单独声明,则可以忽略该数据类型并让它从父级继承。