sql-server - 使用commit之前退出存储过程是否有害?

标签 sql-server tsql

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

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

关于sql-server - 使用commit之前退出存储过程是否有害?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8316507/

相关文章:

sql - 尝试使用计算列将 "yy/mm/dd hh:mm:ss"(存储为字符)转换为日期时间

sql - 将商或更长的表达式分配给局部(实数)变量 T SQL

带有派生表的 SQL Server 查询产生语法错误

c# - 手动处理 SqlDbConnection 导致 "internal .net framework provider error 1"

sql - 检查sql作业是否正在运行

sql - 当名称与表名相同时,内联索引定义失败

sql - 错误: "OLE DB provider "MSDASQL"for linked server "(null)" returned message "[Microsoft][ODBC Driver Manager] Data source name not found ..."

sql-server-2008 - SQL MERGE 语句更新数据

sql-server - SQL Server : finding gaps in employment - island and gap problem

java - Win2k3服务器64位与JDBC的连接问题