Locking Reads
在同一個事務中,如果你先查詢資料,隨後對相關資料進行插入或修改,那麼在標準的SLELECT中不會給出足夠的保護。在你查詢期間另一個事務可以更新或者刪除相同的行。InnoDB提供兩種型別的加鎖讀:
- SELECT ... LOCK IN SHARE MODE
給讀到的每一行都加共享鎖。其它的會話也可以讀到這些行,但是它們不能修改這些行,直到你的事務提交。如果這些行被其它事務修改了但尚未提交,你的 查詢必須等待直到那個事務結束。
- SELECT ... FOR UPDATE
對於檢索到的沒一個索引記錄,鎖定這些行和與之關聯的索引記錄
其實,前者是加意向共享鎖,後者加意向排它鎖。