【问题标题】:Since SELECT FOR UPDATE is meaningless without a transaction and transactions use locks by itself, what is the usecase of SELECT FOR UPDATE?既然没有事务 SELECT FOR UPDATE 是没有意义的,而且事务本身使用锁,那么 SELECT FOR UPDATE 的用例是什么?
【发布时间】:2020-03-16 17:01:45
【问题描述】:

从这里: https://stackoverflow.com/a/27868682/10894456

SELECT ... FOR UPDATE 将通过写入锁定记录(独占) 锁定直到事务完成(提交或回滚)。

选择一条记录并确保在您更新之前它不会被修改 它,你可以开始一个事务,使用 SELECT 选择记录... FOR UPDATE,做一些快速处理,更新记录,然后提交 (或回滚)事务。

这里 https://stackoverflow.com/a/5411366/10894456

注意,事务之外的 FOR UPDATE 是没有意义的

那么既然没有事务的 INSERT FOR UPDATE 是没有意义的并且事务本身使用锁,那么 INSERT FOR UPDATE 的用例是什么? 我唯一的猜测: SELECT ... FOR UPDATE 仅在事务具有低隔离级别(如 read_uncommit)时才有意义,但我不确定,请帮助我

【问题讨论】:

    标签: mysql transactions locking select-for-update


    【解决方案1】:

    在这里找到:https://stackoverflow.com/a/16963718/10894456

    SERIALIZABLE 和使用 SELECT FOR UPDATE 的主要区别 是使用 SERIALIZABLE 时,一切都始终被锁定。与哪里一样 SELECT FOR UPDATE 您可以选择锁定的内容和时间。

    所以 SELECT FOR UPDATE 让我们变得挑剔

    【讨论】:

      猜你喜欢
      • 2014-05-15
      • 2011-07-21
      • 2015-03-08
      • 2011-06-28
      • 2018-12-06
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      相关资源
      最近更新 更多