【发布时间】:2012-09-02 10:43:07
【问题描述】:
是否有任何 TSQL 脚本用于删除 SQLServer 2008 数据库中的所有外键约束和唯一约束?
【问题讨论】:
-
这是一个非常接近的问题.....stackoverflow.com/questions/3001103/…
标签: sql sql-server-2008 tsql
是否有任何 TSQL 脚本用于删除 SQLServer 2008 数据库中的所有外键约束和唯一约束?
【问题讨论】:
标签: sql sql-server-2008 tsql
您可以根据自己的目的使用系统表:
sys.foreign_keys
sys.key_constraints
sys.check_constraintssys.default_constraints以上系统表包含数据库中的所有外键、约束和默认列表。
您可以为删除数据库的所有上述对象编写游标。你的光标必须像下面的查询:
DECLARE @Name NVARCHAR(250),
@Command NVARCHAR(1000)
DECLARE cCons CURSOR for
SELECT name
FROM sys.check_constraints
OPEN cCons
FETCH NEXT FROM cCons INTO @Name
WHILE @@Fetch_Status=0 BEGIN
SET @Command = 'DROP CONTRACT '+ @Name
EXEC(@Command)
FETCH NEXT FROM cCons INTO @Name
End
CLOSE cCons
DEALLOCATE cCons
【讨论】:
使用以下命令生成脚本。将生成的脚本复制并粘贴到新的查询窗口以删除所有 Fk 和 Unique 约束。
从 INFORMATION_SCHEMA.TABLE_CONSTRAINTS 中选择 'ALTER TABLE' + table_name + 'DROP CONSTRAINT' + CONSTRAINT_NAME 其中 CONSTRAINT_TYPE in ('unique','FOREIGN KEY')
【讨论】: