数据库
首页 > 数据库> > 如何仅在sql中为特定连接创建事务?

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

作者:互联网

我只想在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-server,tsql
来源: https://codeday.me/bug/20191121/2050821.html