1

如果我错了,请纠正我。

我对触发器的了解是它们是由事件(插入、更新、删除)触发的。所以我们可以在触发器中运行存储过程等。

这将为应用程序提供良好的响应能力,因为用户与之交互的查询非常小,并且服务器内部将这种“其他”较长时间的东西作为单独的任务来处理。

但我不知道如何在服务器内部处理触发器。我真正想知道的是在下面给出的场景中会发生什么。

触发后插入。而take trigger正在执行一个更长的存储过程。然后在触发器的中间可以有另一个插入。我想知道的是第二个触发器会发生什么。如果可能的话,我可以让第二个触发器忽略它自己。

4

1 回答 1

2

marc_s 给出了正确答案。为了完整起见,我将复制它。

触发器是同步的

如果您想拥有异步功能,请使用 SQL 代理实现。

触发器由事件触发 - 然后它们被执行 - 现在。由于您无法控制触发它们的时间和频率,因此您应该将这些触发器中的处理保持在绝对最小值 - 我总是尝试 - 最多 - 进入另一个表(“审核”表)或可能放一个将“标记”行放入“命令”表中。但是该信息的实际处理 - 运行存储过程等 - 应该留给外部工作 - 不要在触发器中进行大量处理!这将可靠地杀死你所有的性能\响应能力。

于 2012-12-12T17:27:08.443 回答