在 SQL 的触发中
我有一个TABLE_ONE
TABLE_ONE 有 ID ,NAM, PP三个字段
我在
NAM 中的管理触发器中建了一个这样的触发器
CREATE TIGGER TIG_TEST dbo.TABLE_ONE
AFTER UPDATE
AS
IF UPDATE(NAM)
UPDATE TABLE_ONE SET PP='TEST' WHERE
ID= (这个地方如何得到当前所在行的ID
我有一个TABLE_ONE
TABLE_ONE 有 ID ,NAM, PP三个字段
我在
NAM 中的管理触发器中建了一个这样的触发器
CREATE TIGGER TIG_TEST dbo.TABLE_ONE
AFTER UPDATE
AS
IF UPDATE(NAM)
UPDATE TABLE_ONE SET PP='TEST' WHERE
ID= (这个地方如何得到当前所在行的ID
inner join inserted i on a.id = i.id
AFTER UPDATE
AS
IF UPDATE(NAM)
UPDATE TABLE_ONE SET PP='TEST'
from inserted i,TABLE_ONE t
WHERE
t.ID=i.id
update a set PP = 'TEST' from TABLE_ONE a
inner join inserted i on a.id = i.id或 UPDATE TABLE_ONE SET PP='TEST'
from inserted i,TABLE_ONE t
WHERE
t.ID=i.id
能解释一下吗
update触发器中,被修改的行同时被添加到inserted表和deleted表两个特殊表中,inserted表中是被修改后的行,deleted表中是被修改前的行.
批量更新时(如使用update table set column = value不加where条件限制时)inserted表中会有多行而不是一行,所以必须与inserted表或deleted表inner join来定位这些被修改的行在基表中的位置,以准确无误地更新基表中的列.
select * from inserted
select * from deleted
来测试一下,观察这二个表之间的变化.