了解 SQL 事务处理

Understanding SQL Transaction Handling

提问人:Ram 提问时间:3/24/2023 更新时间:3/24/2023 访问量:22

问:

我们有一个场景,偶尔 UpdateStatement1 有效,但 UpdateStatement2 和 UpdateStatement3 不执行。

由于存储过程 UpdateDataSP 是数据库事务作用域的一部分,因此在此事务作用域完成之前,任何其他进程都无法更新 Table1。这个假设正确吗?如果正确,则由于什么原因,不会执行 UpdateStatement2 和 UpdateStatement3 语句?请注意,where 子句确实返回结果,并且没有发生异常。

using (var con = new SqlConnection(connectionString))
{
    con.Open();
    using (var transaction = con.BeginTransaction())
    {
        UpdateData(con,transaction);
        transaction.Commit();
    }
}

public void UpdateData(IDbConnection con, IDbTransaction transaction)
{
    con.ExecuteScalar("UpdateDataSP", commandTimeout: 3600, transaction: transaction,    commandType: CommandType.StoredProcedure);
}

CREATE PROCEDURE [dbo].[UpdateDataSP]
AS
BEGIN
    
    --- UpdateStatement1
    UPDATE TABLE1
    SET COL1 =''
    WHERE ...

    --- UpdateStatement2
    UPDATE TABLE1
    SET COL2 =''
    WHERE ...

    --- UpdateStatement3
    UPDATE TABLE1
    SET COL3 =''
    WHERE ...
END


Regards,
SQL 事务 SQLBretransaction

评论


答: 暂无答案