ホームページ >データベース >mysql チュートリアル >SQL Server は MySQL の ON DUPLICATE KEY UPDATE のように重複キーをどのように処理しますか?

SQL Server は MySQL の ON DUPLICATE KEY UPDATE のように重複キーをどのように処理しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-08 09:56:11386ブラウズ

How Does SQL Server Handle Duplicate Keys Like MySQL's ON DUPLICATE KEY UPDATE?

SQL Server は MySQL の ON DUPLICATE KEY UPDATE と同等の機能を提供しますか?

MySQL では、ON DUPLICATE KEY UPDATE により、新しい行を挿入する代わりに既存の行を更新することでキー値を重複させます。この機能は、一意キー制約または主キー制約を管理する場合に特に役立ちます。

SQL Server は、MERGE ステートメントを通じて同等の機能を提供します。 MERGE ステートメントは、INSERT 操作と UPDATE 操作を 1 つのコマンドに結合し、開発者が指定された条件に基づいて新しい行を挿入したり、既存の行を更新したりできるようにします。

たとえば、次の MERGE ステートメントは、新しい行を挿入する方法を示しています。 rtu_id と time_local の組み合わせがまだ存在しない場合にのみ、METER_DATA テーブル。重複が存在する場合は、行が更新されます。

MERGE
INTO MyBigDB.dbo.METER_DATA WITH (HOLDLOCK) AS target
USING (SELECT
    77748 AS rtu_id
   ,'12B096876' AS meter_id
   ,56112 AS meter_reading
   ,'20150602 00:20:11' AS time_local) AS source
(rtu_id, meter_id, meter_reading, time_local)
ON (target.rtu_id = source.rtu_id
  AND target.time_local = source.time_local)
WHEN MATCHED
  THEN UPDATE
      SET meter_id = '12B096876'
         ,meter_reading = 56112
WHEN NOT MATCHED
  THEN INSERT (rtu_id, meter_id, meter_reading, time_local)
      VALUES (77748, '12B096876', 56112, '20150602 00:20:11');

WHEN MATCHED 句は、指定された条件を満たす既存の行に対して更新操作を実行します。 WHEN NOT MATCHED 句は、条件を満たさない新しい行の挿入操作を実行します。

MERGE ステートメントを利用することで、SQL Server は MySQL の ON DUPLICATE KEY UPDATE と同様の包括的な機能を提供し、キー値が重複しています。

以上がSQL Server は MySQL の ON DUPLICATE KEY UPDATE のように重複キーをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。