【发布时间】:2010-12-16 07:30:39
【问题描述】:
使用 PHP 的 mysqli 如何应用行级锁?
行级锁定会阻止任何人编辑当前存在的符合您条件的行,对吗?但他们会阻止用户插入符合您条件的行吗?
谢谢
【问题讨论】:
使用 PHP 的 mysqli 如何应用行级锁?
行级锁定会阻止任何人编辑当前存在的符合您条件的行,对吗?但他们会阻止用户插入符合您条件的行吗?
谢谢
【问题讨论】:
如果您想锁定特定行不进行编辑,请在 SELECT 查询末尾使用 FOR UPDATE。这会锁定事务中的行并阻止其他用户更新它。这仅适用于像 innodb 这样的事务性存储引擎。
在回答您的问题时,是的,行级锁定“阻止任何人编辑当前存在的符合您的条件的行”。更具体地说,如果(在事务中)您插入、更新或删除一行,则在您提交事务之前,该行将被其他任何人锁定,无法编辑。如果您使用FOR UPDATE 选择一行,那么这也会锁定该行。
但是,这不会“阻止用户插入符合您的条件的行”。
【讨论】:
fetch_object() 获取数据吗?
你想要达到什么目的? InnoDB 引擎使用row level locking,但这是一个自动的内部 MySQL 进程。
【讨论】: