我尝试搜索此文件,但未找到任何内容。如果我有类似的东西:
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
交易会怎样?
最佳答案
它将保持打开状态,直到COMMIT
,ROLLBACK
或连接关闭并且该spid被杀死为止。
这将阻止其他进程并导致各种其他问题。
通常,请始终在CATCH
块中进行如下检查,以确保关闭干净。
IF @@TRANCOUNT > 0
ROLLBACK
或者
WHILE @@Trancount > 0
BEGIN
ROLLBACK
END