ロックを取得する

InnoDBでは、トランザクション中に対象行にロックをかけることができます。

■ロックとは
ロックには排他ロックと共有ロックがあり、読み取りを許すかどうかの違いがあります。
排他ロックは他のトランザクションからの全てのクエリを通さないので、INSERT、UPDATE、DELETEの更新系クエリはもちろん、SELECTなどの参照系のクエリも通しません。
共有ロックは他のトランザクションからのINSERT、UPDATE、DELETEの更新系クエリを通さず、SELECTなどの参照系のクエリは通します。

■共有ロック
トランザクションで共有ロックを取得するには以下のSQLクエリを使います。
select * from users where uid = 1 lock in share mode;

■排他ロック
トランザクションで排他ロックを取得するには以下のSQLクエリを使います。
select * from users where uid = 1 for update;

コメントは利用できません。

ページ上部へ戻る