你没明白Inserted表的含义。
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表,你可以使用这两个临时的驻留内存的表测试某些数据修改的效果及设置触发器操作的条件;然而,不能直接对表中的数据进行更改
UPDATE Inserted SET A4=@A4肯定是不行了。你要修改的是Tab1本身而不是Inserted表。你的情况可以考虑将触发器定义倒视图而不是表上。

解决方案 »

  1.   

    SQL Server中好象有类似Case语句的函数;
    这种修改,需要用触发器吗?
      

  2.   

    UPDATE Inserted SET A4=@A4换成UPDATE Tab1 SET A4=@A4,Update触发器换成基于A1字段
    触发
      

  3.   

    leechie兄:
    我用的数据库是SQLServer,能做基于字段级的UPDATE触发吗?
      

  4.   

    对不起,我说的是ORACLE,不过SQL SERVER更简单
    请看下面:
      “触发器不进行自己的递归调用,换句话说,触发器不调用它自己来响应触发器中对同一个
    表的第二个更新”
    这样
        只要在触发器中
             UPDATE Tab1 SET A4=@A4 WHERE A1=@A1
        其中@A1由Inserted表得到,@A4计算得到 
      

  5.   

    同意mycode(不写代码),
    update tablename set 
    A1=b.a1
    a4=case b.a1 when '1' then expression1 else expression2 end 
    from b
     
      

  6.   

    leechie,signboy兄谢谢你们的好建议,以后常联系:[email protected]
    不知道怎么给你们分?我找遍了全页也没找到给分的热链接。