博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转] SQL Server 批量 停用/启用 外键约束
阅读量:6267 次
发布时间:2019-06-22

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

本文转自:

今天百度知道上面,看到这样一个要求:现在有一个库,有很多张表想要删除一张表的记录的时候,由于外键关联太多,所以,没法删除相应的记录,谁能帮忙写个存储过程,就是先删除所有表的主,外键,然后进行删除表记录,然后再恢复之前所有的主外键.一眼看上去,需要批量删除所有外键,并不困难。但是要求批量所有外键之后,一切处理完毕后,还要把外键重建回来。这个有点复杂了。心想,如果删除之后,还要重建的。那还不如一开始就不删除,只是暂时 “不可用”。等一系列的操作执行完毕后,再把这些前面暂时 “不可用” 的外键  “恢复使用” 首先生成 停用 外键的SQL语句 select   'ALTER TABLE '+o.name+' NOCHECK CONSTRAINT '+fk.name+';'  AS  Commandfrom   sys.foreign_keys  fk    JOIN  sys.all_objects  o  ON (fk.parent_object_id=o.object_id) 具体会有多少条记录,取决于你的数据库里面,有多少个外键了。在我的测试数据库里面,只有一个外键。所以我的执行结果为:ALTER TABLE test_sub NOCHECK CONSTRAINT main_id_cons; 把所有的执行结果,都去执行一遍, 就可以将所有的 外键约束停用。 下面是执行的测试: 1> delete  from test_main2> go消息 547,级别 16,状态 1,服务器 GMJ-PC\SQLEXPRESS,第 1 行DELETE 语句与 REFERENCE 约束"main_id_cons"冲突。该冲突发生于数据库"Test",表"dbo.test_sub", column 'main_id'。语句已终止。1>ALTER TABLE test_sub NOCHECK CONSTRAINT main_id_cons;2> go1> delete from test_main2> go(2 行受影响)1> delete from test_sub2> go(2 行受影响) 数据清理完毕后,恢复外键select   'ALTER TABLE '+o.name+' CHECK CONSTRAINT '+fk.name+';'  AS  Commandfrom   sys.foreign_keys  fk    JOIN  sys.all_objects  o  ON (fk.parent_object_id=o.object_id) 我的执行结果为:ALTER TABLE test_sub CHECK CONSTRAINT main_id_cons; 测试外键约束是否启用了 1> ALTER TABLE test_sub CHECK CONSTRAINT main_id_cons;2> go1> INSERT INTO test_sub VALUES (1, 2 , 'A');2> go消息 547,级别 16,状态 1,服务器 GMJ-PC\SQLEXPRESS,第 1 行INSERT 语句与 FOREIGN KEY 约束"main_id_cons"冲突。该冲突发生于数据库"Test",表"dbo.test_main", column 'id'。语句已终止。

 

 

转载地址:http://xsdpa.baihongyu.com/

你可能感兴趣的文章
Android 中屏幕点击事件的实现
查看>>
做为一个前端工程师,是往node方面转,还是往HTML5方面转
查看>>
spark 安装配置
查看>>
图片裁剪和异步上传插件--一步到位(记录)
查看>>
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
【分享】博客美化(7)推荐几个优秀的自定义博客
查看>>
人工智能和机器学习领域的一些有趣的开源项目
查看>>
python sorted排序
查看>>
python中xrange和range的异同
查看>>
PHP根据ASCII码返回具体的字符
查看>>
atitit.系统架构图 的设计 与工具 attilax总结
查看>>
URAL 1774 A - Barber of the Army of Mages 最大流
查看>>
处理器(CPU)调度问题
查看>>
leetcode - 位运算题目汇总(下)
查看>>
多少个矩形被覆盖
查看>>
22、ASP.NET MVC入门到精通——搭建项目框架
查看>>
3-7 类的友元函数的应用
查看>>
IntelliJ IDEA安装 一些配置
查看>>
【算法之美】求解两个有序数组的中位数 — leetcode 4. Median of Two Sorted Arrays
查看>>
post请求和get请求
查看>>