ホームページ > データベース > mysql チュートリアル > MERGE ステートメントを使用して SQL での重複 INSERT を防ぐ方法

MERGE ステートメントを使用して SQL での重複 INSERT を防ぐ方法

Barbara Streisand
リリース: 2024-11-01 14:42:29
オリジナル
291 人が閲覧しました

How to Prevent Duplicate INSERTs in SQL Using the MERGE Statement?

SQL での重複 INSERT の防止

データベース テーブルへのデータの挿入は重要ですが、重複エントリの回避が困難になる場合があります。このような例の 1 つは、ユーザー入力によって提供された値を挿入するときに発生します。このシナリオでは、ユーザーが誤って重複レコードを送信する可能性があり、データの冗長性と整合性の問題が発生します。

この問題に対処するための効果的な解決策の 1 つは、SQL の MERGE ステートメントを利用することです。 MERGE ステートメントは、INSERT、UPDATE、および DELETE 操作の機能を 1 つのステートメントに結合し、データ操作をきめ細かく制御できます。テーブルに新しい行が存在しない場合にのみ、新しい行を挿入できます。

フィールド ID、MemberNo、FromYr、ToYr を持つ「Delegates」という名前の特定のテーブルの場合、次の 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>
ログイン後にコピー

このクエリ内:

  • MERGE ステートメントは、デリゲート テーブルに新しい行を挿入するために使用されます。
  • USING句は、挿入する値を含む仮想テーブル (X) を指定します。
  • 既存の行に基づいて照合していないため、この場合 ON 句は空です。
  • WHEN NOT MATCHED BY TARGET 句は、仮想テーブルの行が Delegates テーブルに存在しない場合にそれらの行を挿入することを指定します。

この MERGE ステートメントを使用すると、重複した行が挿入されないようにすることができます。 Delegates テーブルに追加し、データの整合性を維持し、重複したレコードを防ぎます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート