-
当一个事务(事务A)对一行数据使用了
FOR UPDATE
:- 其他事务(事务B)不能对这一行数据使用
FOR UPDATE
,会被阻塞,直到事务A提交或回滚。 - 其他事务(事务B)不能对这一行数据使用
LOCK IN SHARE MODE
,会被阻塞,直到事务A提交或回滚。 - 其他事务(事务B)不能对这一行数据进行修改,会被阻塞,直到事务A提交或回滚。
- 其他事务(事务B)可以读取这一行数据。
- 其他事务(事务B)不能对这一行数据使用
-
当一个事务(事务A)对一行数据使用了
LOCK IN SHARE MODE
:- 其他事务(事务B)可以对这一行数据使用
LOCK IN SHARE MODE
。 - 其他事务(事务B)不能对这一行数据使用
FOR UPDATE
,会被阻塞,直到事务A提交或回滚。 - 其他事务(事务B)不能对这一行数据进行修改,会被阻塞,直到事务A提交或回滚。
- 其他事务(事务B)可以读取这一行数据。
- 其他事务(事务B)可以对这一行数据使用
总的来说,FOR UPDATE
是一种排他锁,它阻止其他事务对同一行数据进行修改或锁定;而 LOCK IN SHARE MODE
是一种共享锁,它允许其他事务对同一行数据进行读取和共享锁定,但阻止其他事务对同一行数据进行修改或使用 FOR UPDATE
。