TSql脚本用于删除所有外键约束和唯一约束?

时间:2012-09-02 10:43:07

标签: sql sql-server-2008 tsql

是否有任何TSQL脚本用于删除SQLServer 2008数据库中的所有外键约束和唯一约束

2 个答案:

答案 0 :(得分:0)

您可以将系统表用于您的目的:

  1. sys.foreign_keys
  2. sys.key_constraints
  3. sys.check_constraints
  4. sys.default_constraints
  5. 以上系统表包含数据库中的所有外键,约束和默认列表。

    您可以编写游标以删除数据库的所有上述对象。你的光标必须像下面的查询:

    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
    

答案 1 :(得分:0)

使用以下命令生成脚本。将生成的脚本复制并粘贴到新查询窗口,以删除所有Fk和Unique约束。

从INFORMATION_SCHEMA.TABLE_CONSTRAINTS中选择'ALTER TABLE'+ table_name +'DROP CONSTRAINT'+ CONSTRAINT_NAME 其中CONSTRAINT_TYPE('unique','FOREIGN KEY')