try:
  更新前begin tran
触发器里面判断b的值
如果作废就回滚

解决方案 »

  1.   

    Create trigger trigname on A
    FOR UPDATE
    AS
    begin 
      if exists((select * from inserted where B=1) and
                (select * from deleted where B=1))
          Rollback tran 
    end
    go
      

  2.   

    就在UPDATE的时候下条件就好啦,干嘛要用触发器呢。
      

  3.   

    1.  程序中update时加where b=0
    2.  用instead of update触发器    create trigger tr
        on 表
        instead of update 
        as
           update t
           set 字段1=I.字段1
               ,字段2=I.字段2
           from 表 t
           join deleted D on t.主键=D.主键
           join inserted I on I.主键=D.主键
           where I.b=0go
      

  4.   

    1.  程序中update时加where b=0
    2.  用instead of update触发器    create trigger tr
        on 表
        instead of update 
        as
           update t
           set 字段1=I.字段1
               ,字段2=I.字段2
               .............       from 表 t
           join deleted D on t.主键=D.主键
           join inserted I on I.主键=D.主键
           where I.b=0go
      

  5.   

    在参考了 churchatp1、 WangZWang、 vivianfdlpw() 的发言和查阅了sqlserver帮助文件后
    我用下面的触发器实现,经测试有效CREATE TRIGGER AA ON A
    FOR  UPDATE 
    AS
    IF (select B from deleted d)='1'
    begin
       ROLLBACK transaction
    end