SQL错误:ORA-00905:缺少ON DELETE NO ACTION外键的关键字



不确定我缺少了什么来得到这个错误?

  Error starting at line : 95 in command -
    ALTER TABLE Official_Language ADD CONSTRAINT Language_Official_Language_fk
    FOREIGN KEY (language_code)
    REFERENCES Language (language_code)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
    NOT DEFERRABLE
    Error report -
    SQL Error: ORA-00905: missing keyword
    00905. 00000 -  "missing keyword"
    *Cause:    
    *Action:

感谢您的帮助:-)感谢

ALTER TABLE Official_Language ADD CONSTRAINT Language_Official_Language_fk
FOREIGN KEY (language_code)
REFERENCES Language (language_code)
NOT DEFERRABLE;

可能的选择是ON DELETE[CASCADE|SET NULL]默认情况下(如果省略ON DELETE),它与您编写的内容相同。

NOT DEFERABLE是默认值(您也可以省略它)

这个应该有效:

ALTER TABLE Official_Language ADD CONSTRAINT Language_Official_Language_fk
    FOREIGN KEY (language_code)
    REFERENCES Language (language_code)
    NOT DEFERRABLE;

默认值为"无操作",Oracle对删除/更新没有任何影响。

可能的关键字是ON DELETE CASCADEON DELETE SET NULL

与MySql不同,Oracle不支持ON DELETE NO ACTION-选项有:

  • (无)(即强制引用完整性)
  • ON DELETE CASCADE(即级联删除)
  • ON DELETE SET NULL(如果列可空性允许,则将键更新为空)

参考

SqlFiddle此处

最新更新