我想保留一张 table 上的几个触发器 单独 并希望优先考虑它们。
我可以只有一个触发器并在那里执行逻辑,但我想知道是否有一种更简单/合乎逻辑的方法来实现按预定义顺序进行的操作?
最佳答案
使用 sp_settriggerorder。您可以根据操作指定要触发的第一个和最后一个触发器。
sp_settriggerorder on MSDN
从上面的链接:
A. 设置 DML 触发器的触发顺序
以下示例指定触发器 uSalesOrderHeader 是在 Sales.SalesOrderHeader 表上发生 UPDATE 操作后要触发的第一个触发器。
使用 AdventureWorks;
走
sp_settriggerorder
@triggername='Sales.uSalesOrderHeader',
@order='第一个',
@stmttype = '更新';
B. 设置 DDL 触发器的触发顺序
以下示例指定触发器 ddlDatabaseTriggerLog 是 AdventureWorks 数据库中发生 ALTER_TABLE 事件后要触发的第一个触发器。
使用 AdventureWorks;
走
sp_settriggerorder
@triggername='ddlDatabaseTriggerLog',
@order='第一个',
@stmttype = 'ALTER_TABLE',
@namespace = '数据库';
关于sql - 您如何确定表的多个触发器的优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/94959/