服务器: 消息 207,级别 16,状态 3,过程 TR_upd_t2,行 8
列名 'checks' 无效。
服务器: 消息 207,级别 16,状态 1,过程 TR_upd_t2,行 21
列名 'checks' 无效。就是 and checks='Y' 这里无效,,删掉又可以,但是必需要这样判断呀

解决方案 »

  1.   

    当t1的check(审核)是Y时,就不能对t1做修改了,
    ------------
    这个判断写在触发器中是没有用的,多余的!
    你应该在应用程序中处理这个判断。审核的话就不更新T2触发器TR_upd_t2 是你修改表1记录之后才执行的。已审核状态下@@rowcount<>0是等于0的,
    那么你触发器中的第一个判断就没有用,且触发器也不执行
      

  2.   

    你只需要写:CREATE   TRIGGER   TR_upd_t2 ON [DBO].[t1] 
    FOR UPDATE 
    AS 
    IF @@ROWCOUNT=0 
       RETURN 
    ELSE                  
       UPDATE   t2
       set c1=a.c1,c2=a.c2,checks=a.checks from inserted a
       where t2.id=a.id
      

  3.   

    那建个触发器,当审核是'Y'时,只要更新t1任一字段的话,就把t1的审核状态去掉。。行吗??
      

  4.   

    当审核是'Y'时,只要更新t1任一字段的话,就把t1的审核状态去掉。。这个功能到不如在修改的update语句里面操作,确定修改时,将审核状态取消,
    不用去建立一个触发器来单独实现