能不能在在更新多个字段的时候触发器执行,还有就是能不能像oracle一样获取旧值和新值

解决方案 »

  1.   

    触发器的执行并不在乎你更新了几个字段,只要有更新,就会触发 update 触发器.
    在 inserted 表中获取新值,在 deleted 表中获取旧值.
      

  2.   


    --触发器触发在于表的 插入 更新 和删除inserted   -- 新数据,对于插入 更新 有数据
    deleted    -- 原数据,对于更新 删除 有数据
      

  3.   

    if update(字段)
    --获取新值
    select * from inserted
    --旧值你懂吧
      

  4.   

    可以.
    SQL SERVER中觸發器中可以使用當中二個特定表取得舊值和新值.
    select * from deleted 可以取得舊值,select * from inserted 可以取得新值.
      

  5.   

    create trigger tr_test on 你的表for updateasif update(指定字段)begin    -- 你的处理脚本end
      

  6.   

    只能在触发器里判断特定字段是否被更新,再去执行相关的操作,你这个意思是"列触发器",但现有的触发器是"表触发器".
    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
      

  7.   

    在 inserted 表中存放新值,在 deleted 表中存放旧值
      

  8.   


    更新特定的几个字段的时候触发器才执行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
      

  9.   

    1.SQLServer是表触发器,不是列触发器,但是可以在触发器中指定
    IF UPDATE(特定列)
    BEGIN
    --执行你的语句
    END
    2.触发器中有两个内部表inserted和deleted,当
    插入时:inserted存放插入值,deleted空
    更新时:inserted存放新值,deleted存放旧值
    删除时:inserted空,deleted存放删除值