高难度的SQL 语句 ,高手请入(因为急,所以二发啦,斑竹手下留情)
情况是这样的:
=============================
我的SQL SERVER2005数据库中有4个数据表,如下结构:
表A(ID CHAR(20),NAME CHAR(20)) ID为主键
表B(B_ID CHAR(20),ID CHAR(20),ORDER FLOAT) B_ID为主键,ID为外键 关联 表A 的主键
临时表A(ID CHAR(20),NAME CHAR(20)) ID为主键
临时表B(B_ID CHAR(20),ID CHAR(20),ORDER FLOAT) B_ID为主键,ID为外键 关联 临时表A 的主键
表A中的记录如下:
A1 张三
A2 李四
表B中的记录如下:
A1_1 A1 100
A1_2 A1 200
A2_1 A2 400
A2_2 A2 500
A2_3 A2 600
====================================
我想实现的功能是:将表A和表B中ID= 'A1 '的数据分别插入到临时表A和临时表B后,
再将临时表A和临时表B中 'A1 '改为‘NEW_A1’,希望实现的效果如下:
临时表A中的记录:
NEW_A1 张三
临时表B中的记录:
NEW_A1_1 NEW_A1 100
NEW_A1_2 NEW_A1 200
--------------------
我目前可以写出SQL语句 将表A和表B中ID= 'A1 '的数据分别插入到临时表A和临时表B后达到如下效果:
临时表A中的记录:
A1 张三
临时表B中的记录:
A1_1 A1 100
A1_2 A1 200
而由于主键和外键关联原因,导致我无法单独将临时表A和临时表B中 'A1 '改为‘NEW_A1’。
由于设计等原因,又不可以将临时表A和临时表B的关联去掉,如何办呢?
请大峡出手!!!
------解决方案--------------------外键约束设置成“级联更新”,具体操作是进入设计表,然后选择工具条上的“管理关系”,然后再选择“关系”选项卡,在下面就可以看到。
这样只要改A表,B表中的就会跟着变。
------解决方案--------------------yes
楼上正解。
------解决方案--------------------顶!二楼。我也学习一下。试试先!!
------解决方案--------------------楼主 连临时表也家外键啊!猛就一个字拉!
------解决方案--------------------做个记号。
------解决方案--------------------没试出来,Ivy_zheng能在说说么?
外键约束设置成“级联更新”,具体操作是进入设计表,然后选择工具条上的“管理关系”,然后再选择“关系”选项卡,在下面就可以看到。
我没找到这个,菜鸟飘过。。
------解决方案--------------------晕!
------解决方案--------------------又学了一招,高兴啊
------解决方案--------------------没试出来,Ivy_zheng能在说说么?
外键约束设置成“级联更新”,具体操作是进入设计表,然后选择工具条上的“管理关系”,然后再选择“关系”选项卡,在下面就可以看到。
我没找到这个,菜鸟飘过。。
------------------------------------------
(1)在表上点右键,选择“设计表”菜单,这样就进入了设计表模式。
(2)工具条上有个倒品字形图标,鼠标放上Tooltip提示是“管理关系...”,点这个。
(3)弹出的对话框上面有4个选项卡,选择“关系”。
(4)如果你没有创建外键,当然就没有。先创建个外键或选择已经创建的外键,下面有级联的选择。
备注:学校里面学的参照完整性中,操作应该有级联、受限、不处理、置空四种方式,但SQL Server好像只支持前两种(也可能我没找到)。具体概念看下课本,我用的是王珊的《数据库系统概率》。