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

解决方案 »

  1.   

    http://topic.csdn.net/t/20030623/11/1946111.html
      

  2.   

    查询表所有外键信息
     
    EXEC sp_fkeys  N'表名称'
      

  3.   

    老项,你的名字还真恶啊,呵呵刚才衣大侠给的那个链接
    http://www.csdn.net/develop/Article/27/27055.shtm
    里头给了个存储过程,对于这个问题我觉得是正解。to影子:
    你说的很对啊,这样的操作确实应该分成更新、级联删除、插入这三个步骤来完成,这可能是最正规的方法。多谢!