Maison  >  Article  >  base de données  >  Comment éviter les valeurs en double lors de l'INSERT dans SQL ?

Comment éviter les valeurs en double lors de l'INSERT dans SQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 08:30:02870parcourir

How to Prevent Duplicate Values during INSERT in SQL?

Prévention des valeurs en double lors de l'INSERT dans SQL

Étant donné une table "Délégués" avec les colonnes "ID", "MemberNo", "FromYr, " et "ToYr", l'utilisateur doit empêcher l'insertion de valeurs en double provenant de sa saisie. La requête d'origine, INSERT INTO Delegates ([MemNo],[FromYr],[ToYr]) valeurs (@MemNo, @FromYr,@ToYr), permet des entrées en double pour le même membre et la même année.

À Pour résoudre ce problème, l'utilisateur peut utiliser la commande MERGE. MERGE combine les fonctionnalités des instructions INSERT, UPDATE et DELETE en une seule opération. L'instruction MERGE suivante permettra d'obtenir le comportement souhaité :

<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>

Cette instruction MERGE effectue les opérations suivantes :

  • Elle tente d'abord de joindre les lignes de la table "Délégués" (D ) avec les valeurs fournies par l'utilisateur (X).
  • Si une correspondance est trouvée (en fonction de la condition de jointure spécifiée, qui doit être une clé unique), elle met à jour l'existant rangée.
  • Si aucune correspondance n'est trouvée, il insère une nouvelle ligne avec les valeurs de X.

En utilisant cette instruction MERGE, l'utilisateur peut s'assurer que les valeurs en double ne sont pas insérées dans le tableau "Délégués".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn