日期:2014-05-18  浏览次数:20623 次

如何暂时清空一个主键表中的数据?
我有一个表A,它的主键是库中很多其他表的外键。我想用正式网的数据去更新测试网的表A,为了数据能完全同步,我想先把测试网中A的数据全部清空,然后再把正式网中A的数据导进来。但由于在A身上有很多外键约束,所以我根本无法删除里面的数据。我能想到的方案有两个,但都不知道具体的正确做法,烦请大家执教:
(1)把A身上的外键约束全部都删除,清空数据,再重新建立约束。这个做法的问题是,我没法很容易的获得所有A身上的外键约束的创建脚本(超过20个外键约束,所以手工做是不现实的)。我可以导出这个库里的所有外键约束,然后用搜索的方式找出其中和A相关的,但这也比较麻烦。不知道有没有什么方式可以很容易的得到所有和A相关的约束创建脚本?
(2)暂时关闭数据库的约束检测功能,等我清空了数据之后再恢复,不知道sqlserver有没有提供这样的命令?

------解决方案--------------------
http://topic.csdn.net/t/20030623/11/1946111.html
------解决方案--------------------
你的这种操作本来就是违反数据库的安全性的,应该进行级联删除;
1:如果表中主键值一样,可以用更新处理,不一定要用删除再增加..
2:如果主表新增加数据的主键值与旧数据不一致的话,外键表的数据找不到对应的主键值,他们之间是无法关联的