ホームページ >データベース >mysql チュートリアル >MySQL の ON DUPLICATE KEY UPDATE に相当する SQL Server はありますか?
SQL Server は MySQL の ON DUPLICATE KEY UPDATE に似た機能を提供していますか?
MySQL では、ON DUPLICATE KEY UPDATE により自動更新が可能です挿入により一意のインデックスまたは主キーに重複値が発生する場合の行の。 SQL Server では、この機能に最も近いのは MERGE ステートメントです。
MERGE を使用した更新または挿入
MERGE ステートメントは、INSERT、UPDATE、および DELETE ステートメントを 1 つの操作にまとめます。これは次の目的で使用できます。
例
テーブルに行を挿入しようとする次のクエリについて考えてみましょう。行がまだ存在しない場合:
INSERT INTO MyTable (Id, Name) VALUES (1, 'John Doe')
ID 1 の行が既に存在する場合、このクエリは主キー違反により失敗します。ただし、MERGE を使用してこのシナリオを処理できます:
MERGE INTO MyTable WITH (HOLDLOCK) AS target USING (SELECT 1 AS Id, 'John Doe' AS Name) AS source (Id, Name) ON (target.Id = source.Id) WHEN MATCHED THEN UPDATE SET Name = source.Name WHEN NOT MATCHED THEN INSERT (Id, Name) VALUES (source.Id, source.Name);
この例では、MERGE ステートメントは次のアクションを実行します:
WITH (HOLDLOCK) 句により、ターゲット テーブルが実行中に確実にロックされます。同時更新によるデータ整合性の問題の発生を防ぐための操作。
以上がMySQL の ON DUPLICATE KEY UPDATE に相当する SQL Server はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。