SQL Server 2008 BEGIN TRANSACTION与BEGIN TRY

时间:2017-06-19 00:39:56

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

当我在SQL Server 2014中尝试使用php时,它工作正常,但现在SQL Server 2008报告了以下错误: 关键字' END'附近的语法不正确。 有什么想法吗?

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

INSERTS是正确的。如果我删除了TRY CATCH,它就可以工作。

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要在Try块中移动Begin TRANSACTION 以下是您可以参考的修改

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