博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQLServer禁用、启用外键约束
阅读量:5052 次
发布时间:2019-06-12

本文共 3074 字,大约阅读时间需要 10 分钟。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
---启用or禁用指定表所有外键约束 
alter 
table 
PUB_STRU  NOCHECK 
constraint 
all
alter 
table 
PUB_STRU  
CHECK 
constraint 
all
   
---生成启用or禁用指定表外键约束的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
=
'表名'
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
=
'表名'
 
--生成的sql如下
ALTER 
TABLE 
PUB_STRU NOCHECK 
CONSTRAINT 
PUBSTRU_FK1;
ALTER 
TABLE 
PUB_STRU NOCHECK 
CONSTRAINT 
PUBSTRU_FK2;
ALTER 
TABLE 
PUB_STRU 
CHECK 
CONSTRAINT 
PUBSTRU_FK1;
ALTER 
TABLE 
PUB_STRU 
CHECK 
CONSTRAINT 
PUBSTRU_FK2;  
 
 
--查看约束状态(查询字典表 sys.foreign_keys,该字典表开始出现于sqlserver2005及以上版本):
select 
name 
, is_disabled 
from 
sys.foreign_keys 
order 
by 
name
 
--其中:name  : 外键约束名称   is_disabled : 是否已禁用

  

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
--删除外键
alter 
table 
AdItem 
drop 
constraint 
AdOrder_AdItem_FK1
 
--增加外键
alter 
table 
AdItem
add 
constraint 
AdOrder_AdItem_FK1 
foreign 
key 
(AI_nOrderNo) 
references 
AdOrder(AO_nOrderNo)
 
--单个表的一个外键
alter 
table 
Student nocheck 
constraint 
FK__Student__SchoolN__4222D4EF 
alter 
table 
Student 
check 
constraint 
FK__Student__SchoolN__4222D4EF 
 
--单个表的所有外键
alter 
table 
Student nocheck 
constraint 
all 
alter 
table 
Student 
check 
constraint 
all 
 
--某个数据库的所有表
EXEC 
sp_MSforeachtable @command1=
'alter table ?  NOCHECK constraint all;
EXEC sp_MSforeachtable @command1='
alter 
table 
?  
CHECK 
constraint 
all
;

 

参考:

  

--启用or禁用指定表所有外键约束 
alter 
table 
PUB_STRU  NOCHECK 
constraint 
all
alter 
table 
PUB_STRU  
CHECK 
constraint 
all
   
---生成启用or禁用指定表外键约束的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
=
'表名'
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
=
'表名'
 
--生成的sql如下
ALTER 
TABLE 
PUB_STRU NOCHECK 
CONSTRAINT 
PUBSTRU_FK1;
ALTER 
TABLE 
PUB_STRU NOCHECK 
CONSTRAINT 
PUBSTRU_FK2;
ALTER 
TABLE 
PUB_STRU 
CHECK 
CONSTRAINT 
PUBSTRU_FK1;
ALTER 
TABLE 
PUB_STRU 
CHECK 
CONSTRAINT 
PUBSTRU_FK2;  
 
 
--查看约束状态(查询字典表 sys.foreign_keys,该字典表开始出现于sqlserver2005及以上版本):
select 
name 
, is_disabled 
from 
sys.foreign_keys 
order 
by 
name
 
--其中:name  : 外键约束名称   is_disabled : 是否已禁用

  

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
--删除外键
alter 
table 
AdItem 
drop 
constraint 
AdOrder_AdItem_FK1
 
--增加外键
alter 
table 
AdItem
add 
constraint 
AdOrder_AdItem_FK1 
foreign 
key 
(AI_nOrderNo) 
references 
AdOrder(AO_nOrderNo)
 
--单个表的一个外键
alter 
table 
Student nocheck 
constraint 
FK__Student__SchoolN__4222D4EF 
alter 
table 
Student 
check 
constraint 
FK__Student__SchoolN__4222D4EF 
 
--单个表的所有外键
alter 
table 
Student nocheck 
constraint 
all 
alter 
table 
Student 
check 
constraint 
all 
 
--某个数据库的所有表
EXEC 
sp_MSforeachtable @command1=
'alter table ?  NOCHECK constraint all;
EXEC sp_MSforeachtable @command1='
alter 
table 
?  
CHECK 
constraint 
all
;

 

参考:

  

转载于:https://www.cnblogs.com/dragon2017/p/9708289.html

你可能感兴趣的文章
Android 音量调节
查看>>
windows上面链接使用linux上面的docker daemon
查看>>
Redis事务
查看>>
Web框架和Django基础
查看>>
python中的逻辑操作符
查看>>
HDU 1548 A strange lift (Dijkstra)
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>
洛咕 P2480 [SDOI2010]古代猪文
查看>>
js-创建对象的几种方式
查看>>
JDK JRE Java虚拟机的关系
查看>>
2018.11.20
查看>>
word20161215
查看>>
dijkstra (模板)
查看>>
编译Linux驱动程序 遇到的问题
查看>>
大型分布式网站架构技术总结
查看>>
HDU 1017[A Mathematical Curiosity]暴力,格式
查看>>
[算法之美] KMP算法的直观理解
查看>>
EntityFramework 性能优化
查看>>
【ASP.NET开发】菜鸟时期的ADO.NET使用笔记
查看>>
android圆角View实现及不同版本号这间的兼容
查看>>