一意の製品IDのリストを含むmysqlテーブル(table-A)があります。このテーブルを利用するアプリは、複数のスレッドを利用します。各スレッドはテーブルの行を選択し(最上位)、APIを使用して製品データを取得し、別のテーブルに更新します(テーブルB)。完了すると、スレッドはテーブルA内の対応する製品ID行を削除し、作業する別の行を選択します(テーブルBが更新されている間にテーブルAのすべての行が削除されるまでループします)。
アプリのスレッドがテーブルAの同じ行で誤って機能するのを防ぐにはどうすればよいですか?行が選択されないようにロックする方法はありますか?
例:アプリケーションのスレッド1は、テーブルAから行1を選択します。APIからすべての関連データをテーブルBに取得して更新するには、約10〜15秒かかります。これが発生している間、スレッド2が起動し、テーブルAをチェックして、作業する行を選択します。この場合、行1のみをロックして、スレッド2がそれを認識/読み取りせず、代わりに行2を選択するようにします。