mySQL - 使用mysqli实现行级锁

3

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

行级锁定可以阻止任何人编辑与您的条件匹配的当前行,对吗?但它们是否会阻止用户插入与您的条件匹配的行?

谢谢。

2个回答

8
如果您想锁定特定行以防止编辑,请在SELECT查询的末尾使用FOR UPDATE。这将在您的事务中锁定该行并防止其他用户更新它。这仅适用于像InnoDB这样的事务性存储引擎。
回答您的问题,是的,行级锁“阻止任何人编辑与您的条件匹配的当前存在的行”。更具体地说,如果(在事务内部)插入、更新或删除一行,则该行被锁定,直到您提交事务为止,其他人无法编辑该行。如果使用FOR UPDATE选择一行,则也会锁定该行。
但是,这不会“阻止用户插入与您的条件匹配的行”。

需要强调的是,行级锁定仅适用于InnoDB引擎,而不适用于MyISAM引擎。 - Greg K
啊,刚看到这个 innodb 标签 :) - Greg K
如果行被锁定,是否可以从该行选择数据?例如,如果行被锁定,那么我能否通过fetch_object()获取数据? - TarangP

0

你想要实现什么目标?InnoDB引擎使用行级锁定,但这是一个自动的内部MySQL进程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接