Maison > Article > base de données > Comment éviter les enregistrements en double dans les opérations SQL INSERT à l'aide de MERGE ?
Atténuation des enregistrements en double dans les opérations SQL INSERT
De nombreux systèmes de bases de données fournissent des mécanismes pour empêcher l'insertion d'enregistrements en double dans les tables. Dans ce cas, vous devez vous prémunir contre les insertions en double dans une table appelée « Délégués » qui contient les champs suivants :
Vous effectuez des insertions à l'aide de la requête suivante :
<code class="sql">INSERT INTO Delegates ([MemNo],[FromYr],[ToYr]) values(@MemNo, @FromYr,@ToYr)</code>
Cependant, cette approche n'empêche pas les utilisateurs d'insérer par erreur enregistrements en double pour le même membre et la même année.
Solution utilisant MERGE
Pour éviter les insertions en double, vous pouvez utiliser l'instruction MERGE, qui fournit un moyen pratique d'effectuer plusieurs opérations (insertion, mise à jour ou suppression) basées sur une comparaison entre deux tables ou une table et un ensemble de valeurs.
Dans ce cas, l'instruction MERGE peut être utilisée comme suit :
<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 accomplit ce qui suit :
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!