ホームページ  >  記事  >  データベース  >  MERGE を使用した SQL INSERT 操作で重複レコードを防ぐ方法

MERGE を使用した SQL INSERT 操作で重複レコードを防ぐ方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-29 03:46:29344ブラウズ

How to Prevent Duplicate Records in SQL INSERT Operations Using MERGE?

SQL INSERT 操作における重複レコードの軽減

多くのデータベース システムには、重複レコードがテーブルに挿入されるのを防ぐメカニズムが提供されています。この場合、次のフィールドを含む「Delegates」というテーブルへの重複挿入を防ぐ必要があります:

  • ID (自動インクリメント、プライマリ)
  • MemberNo
  • FromYr
  • ToYr

次のクエリを使用して挿入を実行しています:

<code class="sql">INSERT INTO Delegates ([MemNo],[FromYr],[ToYr]) values(@MemNo, @FromYr,@ToYr)</code>

ただし、このアプローチでは、ユーザーが誤って挿入することを防ぐことはできません。同じメンバーと年の重複レコード。

MERGE を使用した解決策

重複挿入を避けるために、複数のレコードを実行する便利な方法を提供する MERGE ステートメントを使用できます。 2 つのテーブル間の比較、またはテーブルと一連の値の比較に基づく操作 (挿入、更新、または削除)。

この場合、MERGE ステートメントは次のように使用できます。

<code class="sql">MERGE INTO Delegates D
USING (values(@MemNo, @FromYr,@ToYr)) X ([MemNo],[FromYr],[ToYr])
ON (insert unique key join)
WHEN NOT MATCHED BY TARGET THEN
INSERT ([MemNo],[FromYr],[ToYr]))
VALUES (X.[MemNo],X.[FromYr],X.[ToYr]);</code>

このステートメントは次のことを実行します。

  • USING 句は、挿入する値、または既存のレコードと比較する値を指定します。
  • ON 句は、既存のレコードを一意に識別する結合条件を定義します。記録。この場合、フィールドの適切な組み合わせを使用して一意性を確保できます (MemberNo と FromYr など)。
  • WHEN NOT MATCHED BY TARGET 句は、一致するレコードが見つからない場合にのみ挿入操作を実行することを指定します。
  • VALUES 句は、一致するレコードが見つからない場合に挿入される値を提供します。

以上がMERGE を使用した SQL INSERT 操作で重複レコードを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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