高难度的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是主,所以在插入临时表A之前将A1转为new_A1,然后插入临时B表(之前也要进行相同转换)
------解决方案--------------------LZ为什么要用两个临时表呢,完全可以用两个view就行了
create view dbo.vw_A
as
select ( 'NEW ' + ID) as ID,[name] from A where left(ID,2)= 'A1 '
create view dbo.v_B
as
select ( 'NEW '+ID) as UD,( 'NEW '+[Name]) as [name],[order] from B