我尝试在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语句时,该命令可以正常工作,没有任何问题。为什么会这样呢?如果我不能在UPDATE上使用,有什么选项吗?事先谢谢你!
发布于 2010-12-30 05:54:51
级联约束没有"ON UPDATE“子句。除了某种应用程序强制执行或触发器之外,我不知道还有什么其他选择。
发布于 2010-12-30 05:55:45
Oracle中没有ON UPDATE CASCADE这样的选项。也许你可以告诉我为什么你需要这样做,而不是寻找一种方法来实现这一点(我认为使用ON UPDATE触发器是可能的)。我的意思是--为什么要更新DATO_DE_INTERES的主键呢?
发布于 2010-12-30 06:07:13
在Oracle中,约束定义中没有ON UPDATE子句。在绝大多数情况下,你不会想要实现这个“以防万一”,因为主键应该是不可变的。如果您的主键不是不可变的,这通常表示存在数据模型问题,应该解决而不是编码。
也就是说,如果你真的想实现这样的东西,Tom Kyte确实有一个update cascade package。但是,您最好在设计系统时首先避免问题,而不是在这种复杂程度上进行设计。
https://stackoverflow.com/questions/4558075
复制相似问题