【发布时间】:2019-02-05 14:47:19
【问题描述】:
我有两个事务在同一张表上工作。
BEGIN TRAN
SET TRAN ISOLATION LEVEL SERIALIZABLE
--something more
第二个
BEGIN TRAN
SET TRAN ISOLATION LEVEL REPEATABLE READ
--something more
他们会在这个级别上一起工作,还是会在自己的级别上工作?如果此隔离级别之一是快照会发生什么?
【问题讨论】:
-
这些事务是“嵌套”的,都是在单个连接上启动的,还是在单独的连接上启动的?
-
它们被不同的数据库连接调用。但正在同时工作
-
当前事务隔离级别是会话的一部分。如果这些命令同时执行,则根据定义它们在不同的会话中,所以不,它们不是在级别上一起工作的。事务隔离级别规定了何时使用哪种锁,当然,会话确实尊重彼此的锁(或快照)。弄清楚在不同隔离级别下执行命令时会发生什么可能会变得很复杂。
标签: sql sql-server database transactions isolation-level