我尝试搜索此文件,但未找到任何内容。如果我有类似的东西:

CREATE PROCEDURE QQ
AS

BEGIN TRANSACTION

BEGIN TRY

    -- return early and skip commit here
    IF (Condition = true)
      RETURN 0

    COMMIT TRANSACTION

END TRY

BEGIN CATCH

    ROLLBACK

END CATCH

交易会怎样?

最佳答案

它将保持打开状态,直到COMMITROLLBACK或连接关闭并且该spid被杀死为止。

这将阻止其他进程并导致各种其他问题。

通常,请始终在CATCH块中进行如下检查,以确保关闭干净。

IF @@TRANCOUNT > 0
ROLLBACK

或者
WHILE @@Trancount > 0
BEGIN
   ROLLBACK
END

10-08 13:09