GO sp_settriggerorder @triggername= 'Triname1', @order='First', @stmttype = 'UPDATE'; GO sp_settriggerorder @triggername= 'Triname2', @order='Last', @stmttype = 'UPDATE';
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的时候两个触发器都不满足,那没他会提示建立较早的那个触发器里面写的异常处理。 然后就不执行了吗?
或者将这三个写在一起,不知道你具体怎么做的?
sp_settriggerorder @triggername= 'Triname1', @order='First', @stmttype = 'UPDATE';
GO
sp_settriggerorder @triggername= 'Triname2', @order='Last', @stmttype = 'UPDATE';
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的时候两个触发器都不满足,那没他会提示建立较早的那个触发器里面写的异常处理。
然后就不执行了吗?
只能是insert , delete , update各一个.
Last这个不提示.