2014-10-20 215 views
0

不知道我错过了什么来得到这个错误?SQL错误:ORA-00905:缺少关键字ON删除没有行动外键

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: 

任何帮助表示赞赏:-)感谢

+3

移除MySQL的关键字。你有一个Oracle错误。 – 2014-10-20 11:54:04

回答

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

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

不可推迟是默认的(你也可以省略)

0

这一个应该工作:

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

0

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

  • (没有)(即实施参照完整性)
  • ON DELETE CASCADE(即级联删除)
  • ON DELETE SET NULL(更新密钥为null,如果列允许为空)

Reference

SqlFiddle here