MyISAM テーブルの単一行のロック
MySQL では、MyISAM テーブルは行レベルのロックをサポートしていません。ただし、行レベルのロック機能が必要な場合は、この機能を提供する InnoDB への切り替えを検討できます。
行レベルのロックのために InnoDB に切り替える
行レベルのロックを有効にするには、ユーザー テーブルを MyISAM から InnoDB に変換する必要があります。これは、次のコマンドを使用して実行できます。
ALTER TABLE <user_table> ENGINE=InnoDB;
InnoDB に変換したら、SELECT ... FOR UPDATE ステートメントを使用して、特定の行の排他ロックを取得できます。これにより、ロックが解放されるまで、他のセッションはロックされた行を変更したりアクセスしたりできなくなります。
次に例を示します:
SELECT * FROM <user_table> WHERE <condition> FOR UPDATE;
注: ロックを解放する必要があります。行に対する操作が完了したらすぐに。これは、COMMIT または ROLLBACK ステートメントを発行することで実行できます。
追加リソース:
以上がMySQL の MyISAM テーブルで行レベルのロックを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。