mySQL - 使用mysqli应用行级锁定

时间:2009-11-13 14:14:45

标签: php mysql locking innodb

使用PHP的mysqli如何应用行级锁定?

行级别锁定会阻止编辑当前符合条件的当前行的任何人吗?但他们是否阻止用户插入符合您条件的行?

由于

2 个答案:

答案 0 :(得分:8)

如果要锁定特定行以进行编辑,请在SELECT查询结束时使用FOR UPDATE。这会锁定事务中的行并阻止其他用户更新它。这只适用于像innodb这样的事务存储引擎。

在回答您的问题时,是的,行级别锁定“停止编辑当前存在的符合您条件的行的任何人”。更具体地说,如果(在事务内)你INSERT,UPDATE或DELETE一行,那么该行将被其他人锁定,直到你的COMMIT你的事务为止。如果您使用FOR UPDATE选择一行,那么也会锁定该行。

但是,这不会“阻止用户插入符合您条件的行”。

答案 1 :(得分:0)

你想要达到的目标是什么? InnoDB引擎使用row level locking,但这是一个自动内部MySQL进程。