比如有一个表,需要记录每条记录被最后修改的时间id msg updateTime
1  aaa 2011.09.23比如我把这条记录改任何一个字段(可能字段很多,但只列出这么几个),就修改updateTime字段的值。
调用触发器的话,触发器会再次修改updateTime字段,也就是修改了这个表,就再次调用update的触发器,这样不就循环了?这个触发器怎么写比较好

解决方案 »

  1.   

    可以判断一下更新的字段,更新你要更新的字段时修改updatetime,更新updatetime时不需要再更新了
      

  2.   

    1:加一跟踪表,只有主表主键字段+updateTime
    每次更新,更新跟踪表
    2:就是采用3楼的方法,更新是判断一下更新的字段,如只更新改updatetime,则return
      

  3.   

    for的时候直接修改inserted表,不要修改原表
      

  4.   

    消息 286,级别 16,状态 1,过程 truMsgLog,第 23 行
    不能更新逻辑表 INSERTED 和 DELETED。
      

  5.   


    在更新触发器加上如下一段
    if update(updatetime)and exists(select 1 from inserted,deleted 
      where inserted.id = deleted.id   
      and inserted.updatetime <> deleted.updatetime)  
    begin
      return
    end