MSSQL级联删除问题

现MSSQL设置级联删除时候有个问题,简单说就是:

一个表中不能两次使用外键的级联删除或级联更新。
错误提示是:
将 FOREIGN KEY 约束 'FK_Effect.效应实例_Effect.效应' 引入表 'Effect.效应实例' 中将导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 约束。
 
联机丛书的解释是:
由单个 DELETE 或 UPDATE 触发的一系列级联引用操作必须构成不包含循环引用的树。在 DELETE 或 UPDATE 所产生的所有级联引用操作的列表中,每个表只能出现一次。级联引用操作树到任何给定表的路径必须只有一个。树的任何分支在遇到指定了 NO ACTION 或默认为 NO ACTION 的表时终止。
 
一个比较容易想到的办法是数据库中用触发器来实现 On delete cascade,
但是这种方式实现起来的效率可能低一些。
如:
Code
create trigger topic_responses on topic
for delete
as
delete responses from responses join deleted on responses.topicid=deleted.id
posted @ 2008-05-12 22:57  湘西小刁民  阅读(2032)  评论(1编辑  收藏  举报