SQL Server:如何在 T-SQL 中删除表上的所有约束

Vil*_*usi 4 constraint t-sql sql-server-2008-r2 alter-table

我想删除数据库中所有表的所有约束,因为我需要更改许多表的关系。

有没有办法用 T-SQL 做到这一点?我找不到任何解决方案和代码,例如:

ALTER TABLE testDB.dbo.testTable1
DROP ALL CONSTRAINT
GO
Run Code Online (Sandbox Code Playgroud)

不起作用。

小智 5

您必须为要删除的每个约束构建 T-SQL 语句。有一些未记录的程序可以用于此目的sp_MSforeachtable,但我不喜欢使用它们。但是,SQLUSA.com提供了以下示例:


-- SQL disable all constraints - disable all constraints sql server
EXEC sp_MSforeachtable @command1="ALTER TABLE ? NOCHECK CONSTRAINT ALL"
GO
Run Code Online (Sandbox Code Playgroud)

另一种选择是提供了这里的SO,由阿龙贝特朗

然后,如果您喜欢 PowerShell,您可以执行以下操作(位于 SQLServerCentral.com 上的论坛),由Rob Farley提供:


#This is one line just broken up for readability.
PS SQLSERVER:\sql\localhost\default\Databases\YourDatabase>
dir Tables\*\Columns\*\DefaultConstraint
| % {$_.Script(); $_.Drop()}
Run Code Online (Sandbox Code Playgroud)

如果您想要更多示例,请查看此处