首页 > 解决方案 > 既然没有事务 SELECT FOR UPDATE 是没有意义的,而且事务本身使用锁,那么 SELECT FOR UPDATE 的用例是什么?

问题描述

从这里: 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)时才有意义,但我不确定,请帮帮我

标签: mysqltransactionslockingselect-for-update

解决方案


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

SERIALIZABLE 和使用 SELECT FOR UPDATE 之间的主要区别在于 SERIALIZABLE 总是锁定所有内容。与 SELECT FOR UPDATE 一样,您可以选择锁定的内容和时间。

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


推荐阅读