InnoDBの行ロック・テーブルロックについて

データベースを更新する際は、排他制御を行いデータに矛盾が起こらないようにする。
テーブル自体をロックするか、データを更新する行のみをロックするかの2つがあり、用途に応じて使い分ける。

InnoDBでは、ユニーク制約(値が重複しないこと)もしくはインデックスが張られている(どこに行があるかを示した検索のこと)カラム以外でUPDATEを行うと、行ロックではなくテーブルロックになってしまう。
(参考:InnoDBで行ロック/テーブルロックになる条件
従って、select時にfor updateを加えることで特定の行だけをロックし、その後でUPDATEを行うといった工夫が必要になる。