SQL Server数据库自动处理外键关系的存储过程

最近总在做数据迁移的工作。做过类似工作的朋友都知道,数据迁移时,表之间的外键约束实在是让你头疼的事。因为你必须要确定表迁移的顺序,否则迁移过程中,总是在报外键约束的错误。即使你把表之间的外键临时drop了,迁移数据后,再create时,就会发现由于数据的不一致,导致外键已经无法创建成功了。

 

根据我的经验,如果迁移的数据不是那么重要的话或者说允许表中有些不一致数据存在的话,那么不必drop和create外键这么麻烦,可以使用no check语句,让外键临时失效,迁移后再启用。这样迁移后的表即使有外键不一致的数据,也不报错。

 

下面这个存储过程是根据表名,schema和操作方式,自动产生外键操作。这里要感谢Greg Robidoux,是他的一篇文章给了我启发,而且下面这个存储过程也是在他原先的存储过程基础上改造了。

使用方法:指定表名,schema(一般是dbo)和操作(ENABLE, DISABLE, DROP, CREATE, DROPANDCREATE)后,存储过程会根据操作,自动产生对应的代码,比如USP_TJVictor_PKFK 'DISABLE','TestTable','dbo',那么存储过程会自动打印出禁用dbo.TestTable外键的sql语句。

 

如需转载,请注明本文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值