【问题标题】:How to log an error from a catch block and at the same time rollback the transaction?如何从 catch 块中记录错误并同时回滚事务?
【发布时间】:2013-01-10 22:51:53
【问题描述】:
BEGIN TRANSACTION
    BEGIN TRY
        --DO_ACTION
        --COMMIT_TRANSACTION
    END TRY
    BEGIN CATCH
        --LOG_ERROR (e.g. INSERT INTO ErrorTable (ERROR_MESSAGE(), ...))
        --ROLLBACK
    END CATCH

我正在尝试执行以下操作,但是 ROLLBACK 命令正在回滚我的错误记录,因此“ErrorTable”中没有任何内容。

在这种情况下,我将如何去做我想做的事情?

【问题讨论】:

  • 您是否尝试过切换语句的顺序。先回滚再登录?
  • 我也在尝试捕获 ERROR_MESSAGE() 。我现在尝试更改订单。
  • @Icarus,这行得通。我交换了项目。我先回滚,然后记录错误。谢谢!

标签: sql tsql transactions try-catch


【解决方案1】:

你想登录ErrorTable什么?如果是回滚后尚不可用的数据,您可以将其保存在表变量中,然后在回滚后插入ErrorTable。表变量不参与事务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    相关资源
    最近更新 更多