我正在尝试在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吗?先谢谢你了!
答案 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。但是你最好设计系统以避免问题,而不是设计这种复杂程度。