临时启用ON DELETE CASCADE

时间:2009-02-16 18:15:48

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

我正在使用SQL Server 2005。

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

事实上,知道外键约束可以防止意外删除声明,这非常令人感到安慰。

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

对于另一个问题,I wrote a script应自动生成删除。