不要这样用,你这样写:
CREATE TRIGGER 名 on [name]
INSTEAD OF UPdate
AS
if update(c)
  begin
    update [name] set c=case when b=1 then c else aa.c end from inserted aa where aa.a=[name].a
  end或者不用触发器你修改的时候加个where
update [name] set c=yy where b=0

解决方案 »

  1.   

    create trigger tr_name_update
    on name
    for updateupdate name
     set c=d.c
    from inserted i,deleted d
    where name.a=i.a
    and name.a=d.a
    and i.b=1go条件,a是主键,而且不能修改
      

  2.   

    大力的INSTEAD OF 触发器更简便
      

  3.   

    同样的问题,大家换个角度恩考,同样是上面的内容,
    改成删除触发器,执行 delete name 
     Bit 类型 字段中是 1 的不删除,非一的删除。
    结果变为:
    | a | b | c|    --->     | 2 | 1 | 3|
    | 1 | 0 | 3|    --->     | 3 | 1 | 3|
    | 2 | 1 | 3|    --->    
    | 3 | 1 | 3|    --->    
    | 4 | 0 | 3|    写出还是会出问题的。大家不访试试看,
    在实际运用中,我的B 字段为是不保护,如果B 值为1的行,则不能更新,删除。
    请试试
      

  4.   

    “if  (select b from deleted) =1 ROLLBACK”    ?????要是我的部下我一定打屁股。不管你想达到什么目的,明摆着,这句话应该写成:  if exists(select * from deleted where b=1) rollback tran
      

  5.   

    如果一个程序员把4GL语言当成3GL语言,写出的命令明摆是针对单条记录操作而不是针对记录集操作的,那么不用再想他到底懂不懂数据库了,直接就打屁股吧!
      

  6.   

    哈哈。。你不如加在
    delete ... where b<>1 不是更简单!如果你要达到那个效果只能用替代操作触发器!CREATE TRIGGER 名 on [name]
    INSTEAD OF delete
    AS
      delete [name] where b<>1 and a in (select a from deleted)
      

  7.   

    w_rose(w_rose)  呵,4GL/3GL 我还真的不懂,解释下,你写的那句我想还是解决不了问题!  你有没有办法,
      

  8.   

    w_rose(w_rose)  你那个还不一样!  只要删除对象里面有一个b字段中的值为1 就会加滚整过事务。
      

  9.   

    以下是你自己说的话:------------------------------------------------------------------updata 触发器内容我是这样写的   
             if  (select b from deleted) =1 
    ROLLBACK
    这样执行更新一行正确,更新多行出错。
    所以改写成:
    .................你写的那句我想还是解决不了问题!  你有没有办法,------------------------------------------------------------------我想,不记得自己的说的话的人我是没有办法帮他解决问题喽!
      

  10.   

    改成删除触发器,要求执行 delete name  不会出错!!
    这个你看得明白不?  这也看不明白我看你不要混了。
     Bit 类型 字段中是 1 的不删除,非一的删除。
    结果变为:
    | a | b | c|    --->     | 2 | 1 | 3|
    | 1 | 0 | 3|    --->     | 3 | 1 | 3|
    | 2 | 1 | 3|    --->    
    | 3 | 1 | 3|    --->    
    | 4 | 0 | 3|    写出还是会出问题的。大家不访试试看,
    在实际运用中,我的B 字段为是不保护,如果B 值为1的行,则不能更新,删除。
    请试试