在SQL Server 2005中创建表之前禁用约束

时间:2009-03-20 20:23:18

标签: sql-server-2005

在使用T-SQL创建数据库表之前,是否可以禁用Unique和Foreign Key约束?例如,在MySQL(在5.1版中测试)中,如果您有一个创建数据库模式的SQL脚本,您可以添加以下内容:

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

在脚本的开头(在任何CREATE TABLE语句之前)禁用所提到的约束。然后在脚本结束时,您可以使用以下内容再次启用它们。

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;

SQL Server 2005是否有类似内容?

1 个答案:

答案 0 :(得分:2)

我对MySQL并不是很熟悉,但是我在SQL Server中尝试实现的方法是从create table语句中删除约束定义,然后在脚本末尾添加约束,沿着下面的界限。

Create table table1 (id int not null, val varchar(10))
Create table table2 (id int, t1id int, val varchar(10))

......做其他陈述

   Alter table table1 add 
        Constraint pk_table1 Primary Key (id)
    Alter table table2 Add 
        Constraint fk_table1 Foreign Key (t1id) References table1(id)