if update(字段) --获取新值 select * from inserted --旧值你懂吧
可以. SQL SERVER中觸發器中可以使用當中二個特定表取得舊值和新值. select * from deleted 可以取得舊值,select * from inserted 可以取得新值.
create trigger tr_test on 你的表for updateasif update(指定字段)begin -- 你的处理脚本end
只能在触发器里判断特定字段是否被更新,再去执行相关的操作,你这个意思是"列触发器",但现有的触发器是"表触发器". create trigger my_trg on tb after update as if exists(select 1 from inserted a where exists(select 1 from deleted where id=a.id and 特定列!=a.特定列)) begin --这里是特定列被更新时的操作 end
在 inserted 表中存放新值,在 deleted 表中存放旧值
更新特定的几个字段的时候触发器才执行create tirgger tri_tb on tb for update as --假定更新code列 if update(code) and exists(select 1 from inserted i,deleted d where i.主健=d.主健 and i.code <> d.code) begin --这里是code列被更新时的代码 --更新后的code放在inserted表中 --更新前的code放在deleted表中 end
1.SQLServer是表触发器,不是列触发器,但是可以在触发器中指定 IF UPDATE(特定列) BEGIN --执行你的语句 END 2.触发器中有两个内部表inserted和deleted,当 插入时:inserted存放插入值,deleted空 更新时:inserted存放新值,deleted存放旧值 删除时:inserted空,deleted存放删除值
在 inserted 表中获取新值,在 deleted 表中获取旧值.
--触发器触发在于表的 插入 更新 和删除inserted -- 新数据,对于插入 更新 有数据
deleted -- 原数据,对于更新 删除 有数据
--获取新值
select * from inserted
--旧值你懂吧
SQL SERVER中觸發器中可以使用當中二個特定表取得舊值和新值.
select * from deleted 可以取得舊值,select * from inserted 可以取得新值.
create trigger my_trg
on tb
after update
as
if exists(select 1 from inserted a where exists(select 1 from deleted where id=a.id and 特定列!=a.特定列))
begin
--这里是特定列被更新时的操作
end
更新特定的几个字段的时候触发器才执行create tirgger tri_tb on tb
for update
as
--假定更新code列
if update(code) and exists(select 1 from inserted i,deleted d where i.主健=d.主健
and i.code <> d.code)
begin
--这里是code列被更新时的代码
--更新后的code放在inserted表中
--更新前的code放在deleted表中
end
IF UPDATE(特定列)
BEGIN
--执行你的语句
END
2.触发器中有两个内部表inserted和deleted,当
插入时:inserted存放插入值,deleted空
更新时:inserted存放新值,deleted存放旧值
删除时:inserted空,deleted存放删除值