【问题标题】:Temporary enabling of ON DELETE CASCADEON DELETE CASCADE 的临时启用
【发布时间】:2010-10-07 22:22:30
【问题描述】:

我使用的是 SQL Server 2005。

如果不是逻辑删除,我们的应用程序几乎不会删除,因此我们不需要级联删除。

事实上,知道外键约束为我们提供了一些防止意外删除语句的保护,这让我们感到非常欣慰。

但是,有时我需要删除顶级表及其所有子表。目前,我在写入顺序中使用多个 DELETE 语句来执行此操作,它变得非常庞大、复杂且无法保持最新​​的脚本。

我想知道是否有一种方法可以自动为数据库中的所有外键打开级联删除,执行我的顶级删除,然后重新打开它们?

【问题讨论】:

    标签: sql sql-server sql-server-2005


    【解决方案1】:

    编写一对脚本怎么样 - 当您要删除记录时手动运行一个脚本,以针对约束适当地启用 on delete 级联,然后让另一个脚本在完成删除后运行以禁用它们和让一切恢复正常吗?

    【讨论】:

      【解决方案2】:

      这里有另一个问题,I wrote a script 应该会自动生成删除。

      【讨论】:

        【解决方案3】:

        只是一个想法:在父表上使用 INSTEAD OF TRIGGER 进行删除,以便所有子记录删除逻辑都在一个地方

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-31
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-15
          • 2015-01-27
          相关资源
          最近更新 更多