Sql server 2005 在SQL Server 2005中创建表之前禁用约束
在使用T-SQL创建数据库表之前,是否可以禁用唯一和外键约束?。例如,在MySQL(在版本5.1中测试)中,如果您有一个创建数据库架构的SQL脚本,则可以将以下内容放入其中:Sql server 2005 在SQL Server 2005中创建表之前禁用约束,sql-server-2005,Sql Server 2005,在使用T-SQL创建数据库表之前,是否可以禁用唯一和外键约束?。例如,在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 */; 在脚本的开头(在
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
在脚本的开头(在任何CREATETABLE语句之前),禁用上述约束。然后在脚本末尾,您可以使用以下命令再次启用它们
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
SQL Server 2005也有类似的功能吗?我对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)
这也是我推荐的技术。这或确保您的对象以正确的顺序创建。遗憾的是,对于我来说,此解决方案不是一个选项。我猜SQL Server中没有等效的方法。我不知道有什么方法可以全局禁用SQL Server中的约束。您能澄清一下为什么不能使用这种方法吗?要一次性对db中的所有表执行此操作,请使用未记录的ForEAchTable proc:sp_MSForEachTable“将计数(*)选择为“”?“”from?”谢谢您的提示,我将对此进行检查。