Locking Reads
在同一个事务中,如果你先查询数据,随后对相关数据进行插入或修改,那么在标准的SLELECT中不会给出足够的保护。在你查询期间另一个事务可以更新或者删除相同的行。InnoDB提供两种类型的加锁读:
- SELECT ... LOCK IN SHARE MODE
给读到的每一行都加共享锁。其它的会话也可以读到这些行,但是它们不能修改这些行,直到你的事务提交。如果这些行被其它事务修改了但尚未提交,你的 查询必须等待直到那个事务结束。
- SELECT ... FOR UPDATE
对于检索到的没一个索引记录,锁定这些行和与之关联的索引记录
其实,前者是加意向共享锁,后者加意向排它锁。