2012-08-30 16 views
1

如果我错了,请纠正我。触发器如何在SQL Server内部工作

我所知道的有关触发器的是,他们是由事件(插入,更新,删除)触发。所以我们可以在触发器中运行存储过程等。

这将给应用提供了良好的响应,因为用户与之交互查询,是相当小,这个“其他”更长的时间服用的东西是由服务器照顾内部作为一个独立的任务。

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

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

+1

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

回答

1

marc_s给出了正确的答案。为了完整起见,我会复制它。如果你想有一个异步功能去一个SQL经纪人implimenation

触发器同步

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