使用外键创建表失败并出现ORA-00905:缺少关键字

时间:2019-09-21 18:10:02

标签: 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
);

1 个答案:

答案 0 :(得分:1)

您的代码有几个问题:

  • 主键定义的语法错误;应该是CONSTRAINT <constraint_name> PRIMARY KEY (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
);

Demo on DB Fiddle

提醒:请注意,主键引用的列必须是唯一的,或者引用表中的主键(即列S#必须是表Supplier的主键或具有{ {1}}约束。)