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声明为列的一部分,而不是在末尾单独声明,则可以忽略该数据类型并让它从父级继承。