Sql Server 2008:无法使用级联DELETE或UPDATE定义外键约束

时间:2015-01-26 11:32:20

标签: sql-server-2008 triggers foreign-keys

尝试对某些外键应用ON CASCADE UPDATEON CASCADE DELETE时,出现以下错误:

  

消息1787:无法使用级联DELETE或定义外键约束   在表上更新,因为该表具有INSTEAD OF DELETE或   UPDATE TRIGGER定义了它。

这是我的SQL代码:

ALTER TABLE myTable ADD CONSTRAINT [FK_ACTE__CODE_OBJET_ACTE] FOREIGN KEY ([My_Column] ) REFERENCES Table_Referenced ([Column_Referenced]) ON UPDATE CASCADE  ON DELETE CASCADE ;  

我的请求有什么问题? CASCADE条件是否与删除或更新触发器不兼容?

1 个答案:

答案 0 :(得分:1)

  

我的请求有什么问题?是CASCADE条件   是否与删除或更新触发器不兼容?

是。请检查

Designing INSTEAD OF Triggers

Cascading Referential Integrity Constraints

  

无法定义INSTEAD OF DELETE和INSTEAD OF UPDATE触发器   具有使用DELETE或。定义的外键的表   更新级联操作。

此外:

  

无法为具有INSTEAD的表指定级联操作   OF UPDATE或INSTEAD OF DELETE触发器。经过级联行动之后   已为表,INSTEAD OF UPDATE或INSTEAD OF DELETE定义   触发器无法添加到它。

如果能够,您可以使用AFTER triggers

修改

你实际上是自相矛盾的。你必须决定你真正想要的逻辑; INSTEAD OF触发器将操作重定向到其他逻辑或外键中的级联操作。