ホームページ >データベース >mysql チュートリアル >SQL UPDATEの前に古い列の値を取得するにはどうすればよいですか?
SQL の RETURNING 句は、その堅牢な機能にもかかわらず、次のような制限に直面しています。更新後の値のみを取得します。これは、更新された列の元の値を求める場合、特に同時実行性の高い環境ではハードルとなる可能性があります。
Erwin Brandstetter のソリューションは、自己結合を使用することでこの課題にエレガントに対処しています。 FROM 句での結合:
UPDATE my_table SET processing_by = our_id_info -- unique to this worker FROM my_table AS old_my_table WHERE trans_nbr IN ( SELECT trans_nbr FROM my_table GROUP BY trans_nbr HAVING COUNT(*) > 1 LIMIT our_limit_to_have_single_process_grab ) AND my_table.row_id = old_my_table.row_id RETURNING my_table.row_id, my_table.processing_by, old_my_table.processing_by AS old_processing_by
テーブルの別のインスタンス (old_my_table) に結合することで、クエリは更新が発生する前の値をシームレスに取得します。
大量の同時書き込み負荷があるシナリオでは、競合状態を防ぐために追加の対策が必要です。
以上がSQL UPDATEの前に古い列の値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。