gpt4 book ai didi

sql-server - 如何禁用所有表的约束并启用它?

转载 作者:行者123 更新时间:2023-12-01 19:40:19 25 4
gpt4 key购买 nike

我有 60 张 table 。我想删除 10 个表,其中这 10 个表是其他 20 个表的约束(PK,FK)。在删除这 10 个表的同时,我需要截断或删除其他 20 个表中的数据。最后,我想禁用所有 60 个表约束(FK,PK),然后在完成添加/删除表的工作后启用所有 60 个表约束。这可能吗?

当我删除一张 table 时,它要求 FK。当我截断这些 FK 依赖项时,它仍然显示相同的内容。我不想搞乱那些 FK、PK。

我想知道更聪明的方法。

最佳答案

EXEC sp_MSforeachtable @command1="ALTER TABLE ? NOCHECK CONSTRAINT ALL"
GO

您可能还想这样做:

EXEC sp_MSforeachtable @command1="ALTER TABLE ? DISABLE TRIGGER ALL"
GO

之后启用它们

EXEC sp_MSforeachtable @command1="ALTER TABLE ? ENABLE TRIGGER ALL"
GO

-- SQL enable all constraints - enable all constraints sql server
-- sp_MSforeachtable is an undocumented system stored procedure
EXEC sp_MSforeachtable @command1="ALTER TABLE ? CHECK CONSTRAINT ALL"
GO

编辑:
如果禁用约束还不够,您必须删除约束。

如果您要删除并重新创建表,则必须随后重新创建外键约束。

如果您只需要放弃限制,您可能会发现这很有用:
SQL DROP TABLE foreign key constraint

如果您需要编写脚本来删除和创建约束,您可能会发现我在这里的帖子更有用:
SQL Server: Howto get foreign key reference from information_schema?

关于sql-server - 如何禁用所有表的约束并启用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14972816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com