2009-02-16 58 views
3

我使用的是SQL Server 2005中临时启用DELETE CASCADE

我们的应用程序几乎从不删除没有它是一个逻辑删除,因此我们没有必要对级联删除。

事实上,由于知道外部关键限制条件为我们提供了一些防范意外删除声明的保护措施,所以我们相当欣慰。

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

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

回答

1

如何编写一对脚本 - 当您要删除允许在约束条件下正确删除级联的记录时手动运行的脚本,然后让另一个脚本在完成删除后运行以禁用它们并让事情恢复正常?

1

只是想一想:在父表上使用INSTEAD OF TRIGGER来删除,这样所有的子记录删除逻辑就在一个地方