SQL Server 2005 - 具有级联删除的外键

时间:2009-04-21 16:16:32

标签: sql sql-server-2005 foreign-keys cascade

SQL Server 2005中是否有解决方法?

(它让我感到烦恼,每次遇到它我都会陷入困境。但这是我第一次不得不处理并且一直在使用Stack Overflow。请保存我所拥有的一点点理智!)

DimensionTable:
id INT IDENTITY(1,1)

FactTable:
source_id INT NOT NULL,
target_id INT NOT NULL

我创建了一个从“Fact.source_id”到“Dimension.id”的外键,并使用级联删除和级联更新进行设置。

当我尝试用“Fact.target_id”做同样的事情时,我收到一个错误,告诉“哦不,不,不”,因为级联有多条路径可供使用。

这里没有涉及其他外键,只是我要创建的两个。我可以创建没有Cascade的第二个外键,但这对我来说似乎很便利。这是一组将要手工维护的表格(很少会被触及,因此客户端不会支付gui来执行此操作。)这样的级联删除/更新将非常有用,但仅限于如果它'在两个领域。 (为了保持一致,我是个傻瓜)

**** ****呜咽

2 个答案:

答案 0 :(得分:1)

是的,使用INSTEAD OF触发器。它会拦截DELETE命令,你可以相应地指导逻辑。

答案 1 :(得分:0)

您只能从一个关系中级联删除。建议你在触发器中设置它。