mssql sqlserver 触发器执行顺序


摘要:
由于一个表可以定义多个触发器,有时候由于需要定义触发器的执行顺序,我们需要为触发器
指定相应的顺序



sql server 触发器执行顺序分类

sqlserver 触发器执行顺序分类为:
first 、last、none 三种类型

sql server 触发器执行顺序设置方法

设置触发器的顺序需采用系统存储过程 sp_settriggerorder
例:

 ---将触发器tr_test设置为update语句对应的第一个触发器
sp_settriggerorder 
   @triggername ='tr_test',
   @order ='first',
   @stmttype ='update'
   go

 ---将触发器tr_test设置为delete语句对应的第一个触发器
sp_settriggerorder 
   @triggername ='tr_test',
   @order ='first',
   @stmttype ='delete'
   go


查询触发器的执行顺序

在sqlserver中查询触发器的执行顺序,我们可以采用objectproperty 函数获取触发器的属性
例:

  select objectproperty(object_id(N'tr_test'),'ExecIsFirstUpdateTrigger') 
    ---此函数返回1 则代表此触发器是第一个更新触发器
    /*
ExecIsFirstDeleteTrigger:第一个删除触发器
ExecIsFirstUpdateTrigger:第一个更新触发器
ExecIsFirstInsertTrigger:第一个插入触发器

ExecIsLastDeleteTrigger: 最后一个删除触发器
ExecIsLastUpdateTrigger:最后一个更新触发器
ExecIsLastInsertTrigger:最后一个插入触发器
   */


注意事项:
1. instead of 触发器不可以设置执行顺序
2. 如果对触发器重建或使用alter修改触发器后,触发器