sql - 是否可以阻止触发器在事务中运行?

标签 sql sql-server sql-server-2008

根据多个资源,例如this ,

A query that is executed within the context of a trigger is automatically wrapped in a transaction. If there are any distributed queries in the trigger code, the transaction is promoted to a distributed transaction automatically.

简单的问题 - 有没有办法防止这种行为?我正在寻找一种方法来显式阻止触发器中的代码在事务上下文中运行。

最佳答案

如果您尝试执行异步操作,以便调用事务不必等待,您可以考虑 Service Broker ,它的设计正是为了做到这一点 - 触发一些异步任务,并将控制权返回给调用者,而不管事务范围如何。

另一个想法是不让触发器执行工作,而是将工作项弹出到队列表中,并让后台进程连续运行来处理队列。如果您的工作项对插入/删除中的数据集进行操作,这不一定容易做到,但如果没有更多上下文,这似乎是一个可行的选择。

我不知道有什么方法可以防止触发器成为调用事务的一部分 - 事实上这就是重点。

关于sql - 是否可以阻止触发器在事务中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12464704/

相关文章:

SQL 别名给出无效的列名

c# - 从 C# 到 SQL Server 的精度损失

sql-server - 通过 ODBC 从 MS SQL Server 导入到 MS Access 丢失所有索引

sql - 如何从员工姓名中获取经理的姓名

sql - 如何产生对 PLSQL 包、过程或函数的理解?

sql - 如何在具有相同结构的两个 MySQL 表中选择不同的行?

c# - 最后添加 .ToList(或 ToArray)时出现 LINQ 'OR' 条件问题

sql-server - SQL Server 全文搜索 - 对某些列进行加权

c# - 我可以通过同一个 DataContext 对象同时访问多个表吗?

sql - H2 ddl 创建表