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;

参考:
 Enable/Disable Constraint in SQLServer sp_MSforeachtable使用方法

--启用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;

参考:
 Enable/Disable Constraint in SQLServer sp_MSforeachtable使用方法

SQLServer禁用、启用外键约束的更多相关文章

  1. [转] SQL Server 批量 停用/启用 外键约束

    本文转自:http://hi.baidu.com/wangzhiqing999/item/ca699308de4f1ff9a1103429 今天百度知道上面,看到这样一个要求: 现在有一个库,有很多张 ...

  2. mysql关闭/启用外键约束

    1.有时为了导入数据方便,需要临时关闭外键约束mysql>SET FOREIGN_KEY_CHECKS=0; 2.打开外键约束mysql>SET FOREIGN_KEY_CHECKS=1; ...

  3. mssql禁用启用主键约束

    EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'  --禁用 EXEC sp_msforeachtable 'ALTER TA ...

  4. SQL Server 临时禁用和启用所有外键约束(高版本向低版本迁移数据)

    --获得禁用所有外键约束的语句 select 'ALTER TABLE [' + b.name + '] NOCHECK CONSTRAINT ' + a.name +';' as 禁用约束 from ...

  5. oracle 删除外键约束 禁用约束 启用约束

    oracle 删除外键约束 禁用约束 启用约束 执行以下sql生成的语句即可 删除所有外键约束 Sql代码  select 'alter table '||table_name||' drop con ...

  6. MySQL删除所有表的外键约束、禁用外键约束

    转: MySQL删除所有表的外键约束.禁用外键约束 2017年10月27日 00:11:34 李阿飞 阅读数:4512   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...

  7. oracle 禁用外键约束

    1.ORACLE数据库中的外键约束名都在表user_constraints中可以查到.其中constraint_type='R'表示是外键约束.2.启用外键约束的命令为:alter table tab ...

  8. (转载)MySQL删除所有表的外键约束、禁用外键约束

    其实如果想删除所有表可以直接如下操作: 在navicat中直接选中所有表,然后右键删除表即可,会有提示,一路确定,就会先删掉没有外键的表和字表,只要一路确定,删几批就把表都删完了,并不算太麻烦. 转: ...

  9. Constraint6:更新外键约束(Foreign Key Constraint)的引用列

    在SQL Server中,表之间存在引用关系,引用关系通过创建外键约束(Foreign Key Constraint)实现.如果一个Table中的column被其他Table引用,那么该表是参考表,或 ...

随机推荐

  1. sql按中文数字排序

    有表4张 建表和插入数据sql DECLARE @p_Building TABLE ( id INT , BidName ) ); DECLARE @p_Room TABLE ( id INT , R ...

  2. MathQuill.js

    MathQuill.js通过html.css.javascript实现数学公式 <p>Type math here: <span id="math-field"& ...

  3. CentOS6.5(4)----宿主机无法访问虚拟机中的web服务解决方案

    宿主机无法访问虚拟机中的web服务 在Windows7宿主机中的VMware虚拟机中安装了CentOS6.5操作系统,并且基于Nginx搭建了Web服务器,网页刚刚搭建好的时候,通过宿主机的浏览器可以 ...

  4. 在GitHub上删除项目后,在Android Studio上传项目依然提示project is already on github

    描述: 在GitHub上面上传项目,但是感觉有些问题,就想删除了重新上传. 但是在Android Studio重新上传项目时,遇到了问题,一直提示“project is already on gith ...

  5. 闭包&执行环境和作用域

    闭包 执行环境和作用域参考:<javascript高级程序设计(第3版)>4.2节

  6. C#中的特殊数据类型

    一.c#中的特殊数据类型 C#中特殊数据类型有class类型.结构类型.数组类型.枚举类型.集合类型.委托类型.事件.Lambda表达式.接口类型. 1.class类型 1.1类定义 class St ...

  7. C/C++内存对齐 ZZ

    这篇文章写得非常深入浅出.推荐.图需要到原博看. http://songlee24.github.io/2014/09/20/memory-alignment/ 下面是网易的一道笔试题:struct ...

  8. [翻译] TWRPickerSlider

    TWRPickerSlider https://github.com/chasseurmic/TWRPickerSlider Usage Add the dependency to your Podf ...

  9. oracle sql练习 菜鸟入门!

    进入公司 ,首先是进行SQL培训 一下是针对oracle的emp与dept表进行的基础查询 --1.选择部门30中的所有员工: ; --2.列出所有办事员(CLERK)的姓名,编号和部门编号: sel ...

  10. [EffectiveC++]item06:若不想使用编译器自动生成的函数,就该明确决绝