尝试添加外键时出现ORA-00905错误

时间:2010-12-29 21:37:29

标签: sql database oracle ora-00905

我正在尝试在oracle中执行以下语句:

alter table COMENTARIO
add constraint FK_COMENTARIO_DI foreign key (DI_ID)
  references DATO_DE_INTERES (DI_ID) ON UPDATE CASCADE ON DELETE SET NULL;

但是,我得到ORA-00905缺少关键字。

当我删除ON UPDATE语句时,该命令没有任何问题。为什么是这样?有什么选择,以防我无法使用ON UPDATE吗?先谢谢你了!

3 个答案:

答案 0 :(得分:2)

级联约束没有“ON UPDATE”子句。除了某种应用程序执行或触发器之外,我不知道任何其他选择。

答案 1 :(得分:1)

Oracle中没有ON UPDATE CASCADE这样的选项。也许不是寻找实现这个的方法(我认为可以使用ON UPDATE触发器),你可以告诉你为什么需要这个。 我的意思是 - 你为什么要更新DATO_DE_INTERES的主键?

答案 2 :(得分:1)

在Oracle中,约束定义中没有ON UPDATE子句。在绝大多数情况下,您不希望实现此“以防万一”,因为主键应该是不可变的。如果您的主键不是不可变的,那通常表示应该解决的数据模型问题而不是编码。

那就是说,如果你真的希望实现类似的东西,那么Tom Kyte确实有update cascade package。但是你最好设计系统以避免问题,而不是设计这种复杂程度。