暂时关闭限制条件(MS SQL)

20 浏览
0 Comments

暂时关闭限制条件(MS SQL)

我正在寻找一种暂时关闭所有数据库的约束(例如表关系)的方法。

我需要将一个数据库的表复制(使用INSERTs)到另一个数据库。

我知道我可以通过按正确顺序执行命令来实现这一点(以不破坏关系)。

但如果我可以暂时关闭检查约束,然后在操作完成后再启用它就会更容易。

这可能吗?

admin 更改状态以发布 2023年5月24日
0
0 Comments

你只能在SQL 2005+中禁用FK和CHECK约束。请参见 ALTER TABLE

ALTER TABLE foo NOCHECK CONSTRAINT ALL

或者

ALTER TABLE foo NOCHECK CONSTRAINT CK_foo_column

主键和唯一约束不能被禁用,不过如果我理解正确,这应该没问题。

0
0 Comments
-- 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'
---------------------------------------------------------

(无需翻译)

0