提问人:Ram 提问时间:3/24/2023 更新时间:3/24/2023 访问量:22
了解 SQL 事务处理
Understanding SQL Transaction Handling
问:
我们有一个场景,偶尔 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,
答: 暂无答案
评论