SQL Server 临时禁用和启用所有外键约束

我们在删除一个表数据时,经常遇到存在约束,删除不了该数据,可以先禁用约束,然后删除掉该数据后,在启用约束,

注意:禁用约束后约束的两个表数据都要删掉,不然数据会不对

禁用:

select * from (
select  'ALTER TABLE ['  + b.name +  '] NOCHECK CONSTRAINT ' +  a.name +';' as  禁用约束  
from  sysobjects  a ,sysobjects  b    
 where  a.xtype ='f' and  a.parent_obj = b.id)abs
 where 禁用约束 like '%删除时遇到的约束名%'
 

启用:


 select * from (
 select  'ALTER TABLE [' + b.name +  '] CHECK CONSTRAINT ' +  a.name +';' as  启用约束    
from  sysobjects  a ,sysobjects  b    
 where  a.xtype ='f' and  a.parent_obj = b.id)abs
 where 启用约束 like '%删除时遇到的约束名%'

 

上面两行sql是查询出约束的sql,然后把查出来的sql执行一下就可以了【除了”删除时遇到的约束名“相当于变量,其他照抄】

 

REF: http://topic.csdn.net/t/20030714/14/2025998.html

posted @ 2013-10-14 11:26  菜鸟至菜  阅读(1027)  评论(0)    收藏  举报