ホームページ >データベース >mysql チュートリアル >既存のデータベース エントリの増分更新を使用して UPSERTS を効率的に実行するにはどうすればよいですか?
更新句で既存のデータと新しいデータを使用して UPSERTS を実行する方法
データベース管理の領域では、UPSERTS は更新において重要な役割を果たします。挿入操作と更新操作を調和させることにより、テーブルを作成します。一般的なシナリオには、新しい受信値に基づいてテーブル内の既存の値を増分することが含まれます。たとえば、品目を受け取り、その在庫を追跡する在庫テーブルを管理する場合、新しい品目の挿入と既存の品目の在庫の更新の両方を処理するメカニズムが必要です。
伝統的に、この問題には次の方法でアプローチします。 UPSERT ステートメントの update 句内のサブクエリ。この手法を使用すると、更新中の行から既存の値を取得できます。ただし、テーブル内に複数の列が存在する可能性がある場合、複数の選択ステートメントを記述するのが面倒になる可能性があります。
これに対処するために、サブクエリの必要性を排除する、より単純なアプローチが存在します。 ON DUPLICATE KEY を介して更新をトリガーする行を参照すると、更新句内でその値に直接アクセスして操作できます。
次の UPSERT ステートメントを考えてみましょう。
INSERT INTO `item` (`item_name`, items_in_stock) VALUES( 'A', 27) ON DUPLICATE KEY UPDATE `new_items_count` = `new_items_count` + 27
この例では、 、 new_items_count 列は、既存の値を新しい値 27 で増分することによって更新されます。
これは簡略化されています。このアプローチはコードの可読性を高めるだけでなく、不要なサブクエリを排除することで効率も向上します。データベース プログラミングの鍵となるのは、多くの場合、シンプルさと効率性を追求することであり、このエレガントなソリューションはその両方を体現していることを忘れないでください。
以上が既存のデータベース エントリの増分更新を使用して UPSERTS を効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。