根据多个资源,例如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/