mssql sqlserver 禁用和启用外键约束的方法分享


摘要:
下文通过举例的方式分享,禁用和启用指定外键的方法,如下所示:
实验环境:sqlserver 2008 R2


     
---禁用和启用指定表名的所有 约束(包含外键约束)
alter table [tableName]  NOCHECK constraint all; ---禁用所有约束 
alter table [tableName]  CHECK constraint all;   ---启用所有约束
   
---使用sql脚本生成指定外键约束(禁用和启用脚本)
select 'ALTER TABLE ' + b.name + ' NOCHECK CONSTRAINT ' + a.name +';'  from sysobjects a ,sysobjects b where a.xtype ='f' 
and a.parent_obj = b.id and b.name='tableName'; 
---生成禁用脚本


select 'ALTER TABLE ' + b.name + ' CHECK CONSTRAINT ' + a.name +';'  from sysobjects a ,sysobjects b where a.xtype ='f' 
and a.parent_obj = b.id and b.name='tableName'; 
---生成启用脚本

--查看当前数据库下的所有外键及外键状态
select name  as [外键名称],
 case  is_disabled 
 when 1 then '启用'
 else '禁用'
 end as [外键状态]
   from sys.foreign_keys