SQL语句出现问题

时间:2010-10-11 10:35:03

标签: sql oracle ora-00905

我遇到了SQL语句的问题。 我想使用以下语句激活表中外键的“ON UPDATE CASCADE”行为:

ALTER TABLE "DB"."RECORD" ADD CONSTRAINT "RECORD_PT_OUTIL_FK1" FOREIGN KEY ("CDE_PO")
REFERENCES "DB"."PT_OUTIL" ("CDE_PO") ON UPDATE CASCADE ENABLE;

但是当我在Oracle Developer中运行语句时,我只是收到此错误消息:“ORA-00905:missing keyword” 我找不到可能是这个丢失的关键字,我尝试了几个更改但总是出现相同的错误。 我重用了Oracle Developer自己生成的代码,只需用我想要的东西修改它。 这是生成的代码:

ALTER TABLE "DB"."RECORD" ADD CONSTRAINT "RECORD_PT_OUTIL_FK1" FOREIGN KEY ("CDE_PO")
REFERENCES "DB"."PT_OUTIL" ("CDE_PO") ON DELETE CASCADE DISABLE;

看,我只是改变它的结尾。 那么这里有什么问题?我错过了什么吗? (如果有明显的东西,请不要抨击:)) 谢谢!

2 个答案:

答案 0 :(得分:1)

Oracle不支持外键的ON UPDATE子句。

请参阅手册中REFERENCES子句的说明:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/clauses002.htm#CJAIHHGC

答案 1 :(得分:0)

尝试删除命令末尾的DISABLE / ENABLE

根据ADD CONSTRAINT reference,似乎没有任何“启用/禁用”作为命令的一部分。

我认为这是Oracle开发人员最后添加的内容(it being part of Oracle Syntax),可能会导致问题!