Maison > base de données > tutoriel mysql > Comment puis-je effectuer des insertions conditionnelles dans MySQL ?

Comment puis-je effectuer des insertions conditionnelles dans MySQL ?

DDD
Libérer: 2024-12-25 00:03:11
original
712 Les gens l'ont consulté

How Can I Perform Conditional Inserts in MySQL?

Comprendre les insertions conditionnelles dans MySQL

Les instructions d'insertion conditionnelles vous permettent d'insérer une nouvelle ligne dans une table uniquement si certaines conditions sont remplies. Dans MySQL, il n'existe pas de syntaxe dédiée pour les insertions conditionnelles, mais vous pouvez obtenir le même résultat en utilisant des techniques telles que les sous-requêtes et l'instruction MERGE.

Exemple de scénario : éviter les insertions en double

Considérez un scénario dans lequel vous disposez d'une table appelée x_table avec des colonnes (instance, utilisateur, élément). La colonne d'instance est unique et vous souhaitez éviter d'insérer des lignes en double là où un utilisateur spécifique possède déjà un élément donné.

Par exemple, disons que vous souhaitez insérer la ligne (instance=919191, user=123, item=456) si et seulement s'il n'y a pas d'autres lignes dans x_table avec user=123 et item=456.

Utilisation de la sous-requête et de la sélection de ligne

Pour y parvenir, vous pouvez utiliser une sous-requête pour vérifier l'existence de la ligne en double :

INSERT INTO x_table(instance, user, item)
SELECT 919191, 123, 456
FROM dual
WHERE NOT EXISTS (SELECT * FROM x_table
                      WHERE user = 123
                        AND item = 456)
Copier après la connexion

Dans cette instruction, dual est une table spéciale avec une seule ligne (trouvée à l'origine dans Oracle et désormais également disponible dans MySQL). La sous-requête dans l'instruction SELECT sélectionne une seule ligne de données, mais uniquement si les valeurs n'existent pas déjà dans x_table.

Alternative : utilisation de l'instruction MERGE

MySQL a également introduit une instruction MERGE dédiée dans la version 8.0, qui fournit un moyen pratique de gérer les insertions, mises à jour et suppressions conditionnelles en un seul clic. instruction :

MERGE INTO x_table (instance, user, item)
USING (
  SELECT 919191, 123, 456
  WHERE NOT EXISTS (SELECT * FROM x_table
                      WHERE user = 123
                        AND item = 456)
) AS new_row
ON x_table.user = new_row.user AND x_table.item = new_row.item
WHEN NOT MATCHED THEN INSERT (instance, user, item) VALUES (new_row.instance, new_row.user, new_row.item);
Copier après la connexion

L'instruction MERGE utilise une sous-requête similaire à l'exemple précédent pour vérifier l'existence de la ligne en double. Si la ligne n'existe pas (WHEN NOT MATCHED), alors elle exécute une opération d'insertion.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal