如何创建一个数据发生变化时触发的触发器???
而不是ALTER  TRIGGER updatebase ON dbo.Table for update如果现有数据是"OK"  updata Table set Name='OK'   虽然表执行了Update  但其实值还没有变。
这种情况下我不要他触发。 就是原值跟update后的值不一样了,才触发,一样的情况下不触发。有没有办法实现这样的触发器!!

解决方案 »

  1.   

    那应该是不行的,即便判断也要在触发器中判断是否执行其他操作
    触发器中inserted表记录修改后的数据,deleted表记录修改前的数据
    两个表做个关联判断一下值是否一致再做处理
      

  2.   

    不管你值有没有变,只要触发了update操作,就会引发触发器,跟值没关系,trigger有for update的选项。
      

  3.   


    问题我知道,,我是想说,触发器能不能实现我想要的这个功能,还是不能实现。 用update动作,肯定不能实现我要的功能了。
      

  4.   


    ALTER  TRIGGER updatebase 
    ON dbo.tb 
    for update
    as
    update otherTB set col=a.col from(
    select a.* from inserted a inner join deleted b on a.id=b.id
    and a.col<>b.col) a where otherTB.id=a.id
      

  5.   

    ALTER  TRIGGER updatebase
     ON dbo.Table1 for update
     as
     select *
     from deleted as d
    inner join dbo.Table1 as t on d.ID=t.ID and d.Name<>t.Name可以按以上方法判断
      

  6.   

    楼上正解。
    完整如下:ALTER  TRIGGER updatebase
     ON dbo.Table1 for update
     as
     if exists(select *
     from deleted as d
        inner join dbo.Table1 as t on d.ID=t.ID and d.Name<>t.Name)
      begin
       --your code
      end
    else
      begin
      --your code
      end