sql - SQL Server 中的事务隔离级别

标签 sql sql-server isolation-level

我正在尝试更新控制应用程序的表(应用程序执行一些选择语句)。我想更新事务中的表,并将隔离级别设置为未提交读取,因此,如果应用程序未按预期工作,我可以回滚事务。

但是以下代码不起作用:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
go

begin transaction 
go

update [DB].[dbo].[Table] 
set ID = ID - 281 
where ID > 2

当我打开另一个查询窗口时,我无法查询该表...我想,通过这样的事务级别,我将能够查询该表而无需回滚/提交事务。

最佳答案

正如您想象的那样,隔离级别以另一种方式工作。

你只能读取未提交的数据,但在你提交之前,其他人仍然看不到你在事务中做了什么。

如果您想在选择中查看此事务中未提交的数据,您需要设置

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 

选择此选项

关于sql - SQL Server 中的事务隔离级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47829423/

相关文章:

php - SQL 根据表中最新的 150 个条目计算元素

sql-server - 如何获取 XML 变量中的特定元素计数

sql - 如何解决这个存储过程问题

java - 为什么将 ResultSetType 从 TYPE_SCROLL_INSENSITIVE 更改为 TYPE_FORWARD_ONLY 会更改 SQL 查询的结果?

postgresql - 我是否需要更高的事务隔离才能使约束在 PostgreSQL 中可靠地工作?

MySQL数据库注入(inject)攻击后含有恶意SCRIPT标签?

mysql - SQL查询分组依据和全部

sql - 无法删除不是我创建的程序集, "DROP ASSEMBLY"不允许将架构名称指定为程序集名称的前缀

.net - 在连接字符串中强制使用 TCP/IP 协议(protocol)

mysql - Amazon Aurora 是否为在从属节点上运行的只读事务提供可序列化隔离?