3

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

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

那似乎我需要一个内部自治事务来将日志记录在其中。在 SQL Server 2000 上使用 T-SQL 是否可行?

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

4

1 回答 1

2

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

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

单独处理实际处理,例如使用 SQL 代理作业或其他东西。由于这将独立于您的原始语句运行,因此“嵌套”事务和类似的东西也不会有任何问题。

于 2012-06-08T16:02:21.553 回答