我正在尝试编写一个SQL Server 2000触发器。对于每个插入语句,我想将插入的值记录到日志表中,然后进行一些处理。如何防止在处理失败时回滚日志记录?似乎我需要一个内部自主事务来将日志记录放入其中。在SQL Server 2000上使用T-SQL可以实现吗?我希望实现不会造成太多开销。如果处理失败,如何优雅地管理它并使其不回滚原始插入。谢谢。
我强烈建议不要在触发器中进行任何处理。
你无法控制触发器何时以及多频繁地触发,因此,请确保你的触发器非常简洁 - 最多只插入一行(或几行)到一个“审核”或“待处理作业”表中,作为以后处理的“标记”。但是不要在触发器中直接开始/执行处理过程。
使用例如 SQL Agent 作业之类的方式单独处理实际处理。由于它将独立于原始语句运行,因此您也不会遇到“嵌套”事务等问题。