sql - 您如何确定表的多个触发器的优先级?

标签 sql sql-server-2005 tsql triggers

我想保留一张 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/

相关文章:

mysql - 连接表以查找对应的列 SQL

sql - 如何在子查询中使用外部查询的列?

mysql - 如何在以下 SQL 查询中使用 select Case

sql-server - 如何将 SQL Server 2005 数据库从生产环境复制到开发环境?

sql-server - 在 SQL Server 2012 中构建日期时间

sql - 如何拨驼峰柱

sql - 检测列中导致 SQL 错误的单元格

sql - 来自查询的单个 SQL Server 结果集

sql - 从 CASE 语句分配给 T-SQL 变量

sql-server - 如果满足条件,则更新 sql server 表中的第一行