记录触发器内部

时间:2012-06-08 15:39:11

标签: tsql triggers sql-server-2000

我正在尝试编写SQL Server 2000触发器的代码。

对于每个insert语句,我想将插入的值记录到日志表中,然后进行一些处理。如何在处理失败时阻止日志记录回滚?

这似乎我需要一个内部自治事务来将日志记录放入其中。它是否适用于SQL Server 2000上的T-SQL?

我希望实现不会造成太多开销。或者,如果处理失败,我如何优雅地管理它并且不使其回滚原始插入。感谢

1 个答案:

答案 0 :(得分:2)

我强烈建议在触发器中进行任何类型的处理。

您无法控制触发器触发的时间和频率 - 因此,请确保您的触发器非常精简 - 最多将一行(或几行)插入“审核”或“作业处理”表中,作为后续处理的“标记”。但是实际上不要在触发器中启动/执行处理。

使用例如,单独处理实际处理SQL代理作业或其他什么。由于这将独立于您的原始陈述运行,因此您不会遇到任何“嵌套”交易和类似问题的问题。