繁体   English   中英

SQL:在REPEATABLE READ隔离级别,是否在事务结束时持有UPDATE锁?

[英]SQL: at REPEATABLE READ isolation level, are UPDATE locks held to the end of the transaction?

已经阅读了有关REPEATABLE READ如何使SELECT语句持有的锁保持到事务结束的信息。 UPDATE语句采用的排他锁是否也是如此? 因此,当我更新事务中的一行时,是否发生后续的SELECT返回该UPDATE值的情况?

因此,我了解到,如果我在事务1中选择一行,那么事务2将无法更新它,直到事务1完成。 但是,如果我对事务1中的行进行UPDATE,事务2是否仍必须等待事务1完成才能使事务2可以更新它?

除非第二个事务在隔离级别READ UNCOMMITED上运行,否则第一个事务中UPDATE语句在第一个事务中获得的排他锁将阻止所有选择,直到提交第一个事务为止。

因此,我了解到,如果我在事务1中选择一行,那么事务2将无法更新它,直到事务1完成。 但是,如果我对事务1中的行进行UPDATE,事务2是否仍必须等待事务1完成才能使事务2可以更新它?

是。

如果在REPEATABLE READ下,您在事务1中执行SELECT,则事务2仍可以添加事务1 中的SELECT的WHERE子句匹配的新数据 。这是因为事务1将行读取锁定放置在所有检索到的数据上,而不是范围锁定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM