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

CREATE TABLE with foreign key fails with ORA-00905: missing keyword

每当我尝试引用外键时,我都会收到此错误(缺少关键字) 这是我的代码:

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
);

您的代码有几个问题:

  • 你的主键定义语法错误;应该是 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

温馨提示:请注意主键引用的列必须是唯一的,或者是被引用的table中的主键(即列S#必须是[=38=的主键) ] Supplier 或具有 UNIQUE 约束)。