SQL Server 是否支持禁用和启用外键约束?或者是我唯一的选择 drop ,然后 重新create约束?
drop
create
如果要禁用数据库中的所有约束,只需运行以下代码:
-- disable all constraints EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
要重新打开它们,请运行:(打印当然是可选的,它只是列出表格)
-- enable all constraints exec sp_MSforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
在将数据从一个数据库填充到另一个数据库时,我发现它很有用。这是比放弃约束更好的方法。正如您所提到的,在删除数据库中的所有数据并重新填充它(例如在测试环境中)时,它会派上用场。