我有一个SQL Server 2008 R2存储过程,它在TRANSACTION中运行一些INSERT和UPDATE。在每个陈述之后,我需要记录刚才发生的事情,然后再进行下一步。如何记录事务中的事件
这里是我的代码:
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO... -- 1st statement
INSERT INTO MyEventLog (EventDescription) VALUES ('Did Step 1') -- log
UPDATE... -- 2nd statement
INSERT INTO MyEventLog (EventDescription) VALUES ('Did Step 2') -- log
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF (@@TRANCOUNT<>0) ROLLBACK TRANSACTION
EXEC LogError 'I got an error'
END CATCH
问题是:如果有错误,事务回滚所有语句 - 包括我所需要的记录。如果发生错误,如何回滚事务但保留日志记录。
如何?请更新我的代码示例以显示您的意思。订单需要保持不变,非登录语句需要在TRANS中。 –