Maison  >  Article  >  base de données  >  Comment éviter les INSERTs en double dans SQL à l'aide de l'instruction MERGE ?

Comment éviter les INSERTs en double dans SQL à l'aide de l'instruction MERGE ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 14:42:29223parcourir

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

Prévenir les INSERTS en double dans SQL

L'insertion de données dans une table de base de données est cruciale, mais parfois éviter les entrées en double devient un défi. Un tel cas se produit lors de l'insertion de valeurs fournies par l'utilisateur. Dans ce scénario, les utilisateurs peuvent soumettre par erreur des enregistrements en double, entraînant des problèmes de redondance et d'intégrité des données.

Pour résoudre ce problème, une solution efficace consiste à utiliser l'instruction MERGE de SQL. L'instruction MERGE combine les fonctionnalités des opérations INSERT, UPDATE et DELETE en une seule instruction, offrant un contrôle précis sur la manipulation des données. Il vous permet d'insérer de nouvelles lignes uniquement si elles n'existent pas déjà dans la table.

Pour votre table spécifique nommée « Délégués », avec les champs ID, MemberNo, FromYr et ToYr, vous pouvez utiliser le MERGE suivant pour éviter les insertions en double :

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

Dans cette requête :

  • L'instruction MERGE est utilisée pour insérer de nouvelles lignes dans la table Delegates.
  • L'USING La clause spécifie une table virtuelle (X) qui contient les valeurs à insérer.
  • La clause ON est vide dans ce cas car nous ne faisons aucune correspondance en fonction des lignes existantes.
  • La clause WHEN NOT La clause MATCHED BY TARGET spécifie que les lignes de la table virtuelle doivent être insérées si elles ne sont pas déjà présentes dans la table Delegates.

En utilisant cette instruction MERGE, vous pouvez vous assurer que les lignes en double ne sont pas insérées dans votre table des délégués, préservant l'intégrité des données et évitant les enregistrements redondants.

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