【问题标题】:SQL Server 2005 - Foreign Keys with Cascaded DeleteSQL Server 2005 - 具有级联删除的外键
【发布时间】:2009-04-21 16:16:31
【问题描述】:

在 SQL Server 2005 中有没有办法解决这个问题?

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

维度表:
id INT IDENTITY(1,1)

事实表:
source_id INT NOT NULL,
target_id INT NOT NULL

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

当我尝试对“Fact.target_id”执行相同操作时,我收到一条错误消息,提示“哦,不,不,不”,因为级联有多个路径可供遵循。

这里没有涉及其他外键,只是我要创建的两个。我可以在没有级联的情况下创建第二个外键,但这对我来说似乎很糟糕。这是一组将手动维护的表(它们很少会被触及,因此客户不会为 gui 付费。)这样的级联删除/更新将非常有用,但仅如果它在两个字段上。 (我不喜欢一致性)

****呜咽****

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-05
        • 2011-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多