我试着寻找这个,但我没找到任何东西.如果我有类似的东西:
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
Run Code Online (Sandbox Code Playgroud)
交易会怎样?
它会保持打开状态COMMIT
,直到你,ROLLBACK
或连接关闭并且spid被杀死.
这将阻止其他进程并导致各种其他问题.
通常情况下,总是在您的CATCH
区块中运行如下所示的检查,以确保您干净地关闭.
IF @@TRANCOUNT > 0
ROLLBACK
Run Code Online (Sandbox Code Playgroud)
要么
WHILE @@Trancount > 0
BEGIN
ROLLBACK
END
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
837 次 |
最近记录: |