暂时禁用和启用约束,以便我可以删除记录

时间:2011-12-15 00:13:47

标签: sql-server

我希望将此代码放入aspx环境中sqldatabase的delete命令中:

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
    GO
    DELETE FROM Sales.Individual
    WHERE CustomerID ='20562'
    GO
    exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
    GO

这样我可以先禁用约束,删除指定的记录,然后重新建立约束。我无法以某种方式让它工作,有没有人知道如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:1)

你真的需要考虑一下。假设您禁用了约束并删除了记录。您无法重新放置约束,除非您还删除了阻止您首先删除原始约束的所有相关记录。

您的选择是按顺序删除所有相关记录,或者在删除时使您的关系级联。或者更好的是,不要删除记录 - 请参阅dana的建议。虽然我个人更喜欢使用Deleted datetime null而不是IsDeleted bit null