【问题标题】:SQL Server 2008 BEGIN TRANSACTION with BEGIN TRYSQL Server 2008 BEGIN TRANSACTION 与 BEGIN TRY
【发布时间】:2017-06-19 22:13:31
【问题描述】:

当我在 SQL Server 2014 的 php 中尝试此操作时,它可以工作,但现在使用 SQL Server 2008 报告以下错误: 关键字“END”附近的语法不正确。 任何想法为什么?

    BEGIN TRANSACTION 
    BEGIN TRY 
      INSERT ... 
      INSERT ...
    COMMIT TRANSACTION 
    END TRY 
    BEGIN CATCH 
      ROLLBACK TRANSACTION 
    END CATCH

插入是正确的。如果我删除 TRY CATCH,它会起作用。

谢谢!

【问题讨论】:

    标签: php sql-server-2008 try-catch


    【解决方案1】:

    您需要将 Begin TRANSACTION 移到 Try 块中 下面是修改过的,可以参考一下

    BEGIN TRY
    BEGIN TRANSACTION
        INSERT...
        INSERT...
    COMMIT TRANSACTION
    END TRY
    
    BEGIN CATCH
    IF (@@TRANCOUNT > 0)
    BEGIN
        ROLLBACK TRANSACTION
        PRINT 'Error detected, all changes reversed'
    END
    END CATCH
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多