(1)把A身上的外键约束全部都删除,清空数据,再重新建立约束。这个做法的问题是,我没法很容易的获得所有A身上的外键约束的创建脚本(超过20个外键约束,所以手工做是不现实的)。我可以导出这个库里的所有外键约束,然后用搜索的方式找出其中和A相关的,但这也比较麻烦。不知道有没有什么方式可以很容易的得到所有和A相关的约束创建脚本?
(2)暂时关闭数据库的约束检测功能,等我清空了数据之后再恢复,不知道sqlserver有没有提供这样的命令?
6 个解决方案
#1
http://topic.csdn.net/t/20030623/11/1946111.html
#2
你的这种操作本来就是违反数据库的安全性的,应该进行级联删除;
1:如果表中主键值一样,可以用更新处理,不一定要用删除再增加..
2:如果主表新增加数据的主键值与旧数据不一致的话,外键表的数据找不到对应的主键值,他们之间是无法关联的
1:如果表中主键值一样,可以用更新处理,不一定要用删除再增加..
2:如果主表新增加数据的主键值与旧数据不一致的话,外键表的数据找不到对应的主键值,他们之间是无法关联的
#3
查询表所有外键信息
EXEC sp_fkeys N'表名称'
EXEC sp_fkeys N'表名称'
#4
老项,你的名字还真恶啊,呵呵
刚才衣大侠给的那个链接
http://www.csdn.net/develop/Article/27/27055.shtm
里头给了个存储过程,对于这个问题我觉得是正解。
to影子:
你说的很对啊,这样的操作确实应该分成更新、级联删除、插入这三个步骤来完成,这可能是最正规的方法。多谢!
刚才衣大侠给的那个链接
http://www.csdn.net/develop/Article/27/27055.shtm
里头给了个存储过程,对于这个问题我觉得是正解。
to影子:
你说的很对啊,这样的操作确实应该分成更新、级联删除、插入这三个步骤来完成,这可能是最正规的方法。多谢!
#5
哎呀,多谢影子兄,这正是我想要的阿 ^_^
#6
^_^
#1
http://topic.csdn.net/t/20030623/11/1946111.html
#2
你的这种操作本来就是违反数据库的安全性的,应该进行级联删除;
1:如果表中主键值一样,可以用更新处理,不一定要用删除再增加..
2:如果主表新增加数据的主键值与旧数据不一致的话,外键表的数据找不到对应的主键值,他们之间是无法关联的
1:如果表中主键值一样,可以用更新处理,不一定要用删除再增加..
2:如果主表新增加数据的主键值与旧数据不一致的话,外键表的数据找不到对应的主键值,他们之间是无法关联的
#3
查询表所有外键信息
EXEC sp_fkeys N'表名称'
EXEC sp_fkeys N'表名称'
#4
老项,你的名字还真恶啊,呵呵
刚才衣大侠给的那个链接
http://www.csdn.net/develop/Article/27/27055.shtm
里头给了个存储过程,对于这个问题我觉得是正解。
to影子:
你说的很对啊,这样的操作确实应该分成更新、级联删除、插入这三个步骤来完成,这可能是最正规的方法。多谢!
刚才衣大侠给的那个链接
http://www.csdn.net/develop/Article/27/27055.shtm
里头给了个存储过程,对于这个问题我觉得是正解。
to影子:
你说的很对啊,这样的操作确实应该分成更新、级联删除、插入这三个步骤来完成,这可能是最正规的方法。多谢!
#5
哎呀,多谢影子兄,这正是我想要的阿 ^_^
#6
^_^