使用PHP的mysqli如何应用行级锁定?
行级别锁定会阻止编辑当前符合条件的当前行的任何人吗?但他们是否阻止用户插入符合您条件的行?
由于
答案 0 :(得分:8)
如果要锁定特定行以进行编辑,请在SELECT查询结束时使用FOR UPDATE
。这会锁定事务中的行并阻止其他用户更新它。这只适用于像innodb这样的事务存储引擎。
在回答您的问题时,是的,行级别锁定“停止编辑当前存在的符合您条件的行的任何人”。更具体地说,如果(在事务内)你INSERT,UPDATE或DELETE一行,那么该行将被其他人锁定,直到你的COMMIT你的事务为止。如果您使用FOR UPDATE
选择一行,那么也会锁定该行。
但是,这不会“阻止用户插入符合您条件的行”。
答案 1 :(得分:0)
你想要达到的目标是什么? InnoDB引擎使用row level locking,但这是一个自动内部MySQL进程。