如果表中有两个触发器触发器的规则都一样,就只有异常提示不一样,那么在触发了触发器的时候,为什么只提示最早建立的那个.

解决方案 »

  1.   

    异常后,sql server根据级别判断是否继续执行
      

  2.   

    一个表有三个触发器.insert , update , delete.
    或者将这三个写在一起,不知道你具体怎么做的?
      

  3.   

    GO
    sp_settriggerorder @triggername= 'Triname1', @order='First', @stmttype = 'UPDATE';
    GO
    sp_settriggerorder @triggername= 'Triname2', @order='Last', @stmttype = 'UPDATE';
      

  4.   

    alter trigger trig_update_bank
    on bank
    for update
    as
    declare @beforemoney money,@aftermoney money
    select @beforemoney=currentMoney from deleted
    select @aftermoney=currentmoney from inserted
    if abs(@aftermoney-@beforemoney)>200
    begin
    print ''+convert(varchar(8),abs(@aftermoney-@beforemoney))
    raiserror ('每笔交易不能超过200元,交易失败',16,1)
    rollback transaction
    end
    go
    alter trigger trig_update_bank
    on bank
    for update
    as
    declare @beforemoney money,@aftermoney money
    select @beforemoney=currentMoney from deleted
    select @aftermoney=currentmoney from inserted
    if abs(@aftermoney-@beforemoney)>300
    begin
    print ''+convert(varchar(8),abs(@aftermoney-@beforemoney))
    raiserror ('每笔交易不能超过300元,交易失败',16,1)
    rollback transaction
    end
    go上面的两个例子一个是交易不能超过200,一个是不能超过300
    如果交易是500的时候两个触发器都不满足,那没他会提示建立较早的那个触发器里面写的异常处理。
    然后就不执行了吗?
      

  5.   

    那你也不可能对同一个表建立两个update触发器.
    只能是insert , delete , update各一个.
      

  6.   

    设置顺序后,提示的是First,
    Last这个不提示.