在一表的UPDATE触发器里,有INSERTED表及DELETED表,数据如下:
INSERTED DELETED
code code
001 A001
002 C002
003 B003
我想当这表更新了数据后,也触发另一表TABLE1里的字段CODE的值为INSERTED表的值。
TABLE1
code
A001
B003
A001
C002
B003
变为:
更新后的TABLE1表
code
001
003
001
002
003
请问这语句如何写?多谢!
INSERTED DELETED
code code
001 A001
002 C002
003 B003
我想当这表更新了数据后,也触发另一表TABLE1里的字段CODE的值为INSERTED表的值。
TABLE1
code
A001
B003
A001
C002
B003
变为:
更新后的TABLE1表
code
001
003
001
002
003
请问这语句如何写?多谢!
错误107:table1前缀与查询中的所有表我或别名不匹配!
INSERTED DELETED
code code
01A A001
DDD C002
324 B003
table1
set
code =right(code,3)
from
inserted i
left join deleted d on
code=d .code
因INSERTED是内存中更新后的CODE,这个跟DELETED表中的CODE都没有相应的关系,只有行数相等及对应。
8楼的跟1楼的都是搞错了我的原意。
SELECT *,id=IDENTITY(INT,1,1) INTO #2 FROM #deletedUPDATE #tab SET code =i.code1 FROM #1 i,#2 d WHERE d.code2=#tab.code AND i.id=d.id
比如综合 表B 表C 的内容来更新表A
那么可以分两个步骤step 1
Select Key, Value From 表B, 表C Where ....
其中 Key 为 表A 中需要更新的内容的关键字段.(如果表A中逐渐包含两个字段则变化成
Select KeyA, KeyB, Value From 表B, 表C Where ....)step 2
将上面的查询结果更新到表A
Update A
Set A.Value = Result.Value
From
表A as A,
(Select ....) AS Result
Where A.Key = B.Key