在使用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是否有类似内容?
答案 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)