大家好。
现在要更新一张表,用户更新完表的数据,我要重新定义这个字段值。
例如,表TABLE1中,有一字段F,当用户修改为值S1时,我要让值变成S2,更新到表中。
我想用触发器来解决,不知道这个思路怎么样。
我用的是触发器的UPDATECREATE TRIGGER  UpdateS
ON  TABLE1
AFTER  INSERT 
AS 
BEGIN
  update a
  set a.s='s2'
 from 
  TABLE1  a
  INNER JOIN INSERTED b
  on a.keyfield=b.keyfield
  where a.s='s1' and b.s='s1'
但这样UPDATE就死循环了。请问我改如何让用户的值S1自动变成S2,存放到TABLE1中。(前提是最好用SQL来解决,不要改程序)
谢谢!

解决方案 »

  1.   

    CREATE TRIGGER UpdateS
    ON TABLE1
    for  update --这里怎么能是INSERT 
    AS  
    BEGIN
      update a
      set a.s='s2'
     from  
      TABLE1 a
      INNER JOIN INSERTED b
      on a.keyfield=b.keyfield
      where a.s='s1' and b.s='s1'
      

  2.   

    二楼的TX,我笔误啦,是UPDATE
    但UPDATE表TABLE1,会死循环哦。
      

  3.   

    因为触发器内部UPDATE TABLE1,又会引起新的触发,这样不停的触发下去,就死循环了。
      

  4.   

    CREATE TRIGGER UpdateS
    ON TABLE1
    for update 
    AS  
    BEGIN
      update TABLE1
      set f ='s2'
     from INSERTED i inner join deleted  d on i.keyfield = d.keyfield
     and isnull(i.f,'0') <> isnull(d.f,'0')
     and i.keyfield = TABLE1.keyfield
     and i.f = 'S1'
    end
      

  5.   


    限制触发条件.inserted.f <> deleted.f and inserted.f = 's1' 第一次更新会触发,
    后面不满足条件就不会再执行了,
      

  6.   

    两个UPDATE语句写一起,外面用事务处理下行不?