暂时关闭限制条件(MS SQL)
暂时关闭限制条件(MS SQL)
我正在寻找一种暂时关闭所有数据库的约束(例如表关系)的方法。
我需要将一个数据库的表复制(使用INSERTs)到另一个数据库。
我知道我可以通过按正确顺序执行命令来实现这一点(以不破坏关系)。
但如果我可以暂时关闭检查约束,然后在操作完成后再启用它就会更容易。
这可能吗?
admin 更改状态以发布 2023年5月24日
你只能在SQL 2005+中禁用FK和CHECK约束。请参见 ALTER TABLE
ALTER TABLE foo NOCHECK CONSTRAINT ALL
或者
ALTER TABLE foo NOCHECK CONSTRAINT CK_foo_column
主键和唯一约束不能被禁用,不过如果我理解正确,这应该没问题。
-- Disable the constraints on a table called tableName: ALTER TABLE tableName NOCHECK CONSTRAINT ALL -- Re-enable the constraints on a table called tableName: ALTER TABLE tableName WITH CHECK CHECK CONSTRAINT ALL --------------------------------------------------------- -- Disable constraints for all tables in the database: EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' -- Re-enable constraints for all tables in the database: EXEC sp_msforeachtable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL' ---------------------------------------------------------
(无需翻译)