gpt4 book ai didi

c# - 如何仅在 sql 中为特定连接创建事务?

转载 作者:行者123 更新时间:2023-11-30 16:10:33 25 4
gpt4 key购买 nike

我只想在 sql 中为特定连接创建一个事务。它应该为所有连接锁定该表,但允许其他连接读取该表,即使事务是从另一个连接开始的。我应该使用什么隔离级别。

Tran = CnnTran.BeginTransaction(IsolationLevel.RepeatableRead);            

最佳答案

对于选择查询,您可以使用 WITH (NOLOCK)SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

READ UNCOMMITTED:指定语句可以读取已被其他事务修改但尚未提交的行。因此,select 语句可以读取由其他未提交的事务更新的行。因此,需要在要读取该表的其他连接上设置隔离级别。

如果你愿意,你可以在连接上设置:

var myConnection = new SqlConnection();

// connection for reading uncommitted transactions
myConnection.BeginTransaction(IsolationLevel.ReadUncommitted).Commit();

或者如果您愿意,您可以在事务中执行此操作:

using (var myConnection = new SqlConnection(connectionString)) {
myConnection.Open();
using (var transaction = myConnection.BeginTransaction(IsolationLevel.ReadUncommitted)) {
// do stuff
transaction.Commit();
}
}

关于c# - 如何仅在 sql 中为特定连接创建事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25621297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com