Maison > base de données > tutoriel mysql > Comment puis-je utiliser la MISE À JOUR DE CLÉ EN DUPLICATE de MySQL pour les insertions et mises à jour de plusieurs lignes ?

Comment puis-je utiliser la MISE À JOUR DE CLÉ EN DUPLICATE de MySQL pour les insertions et mises à jour de plusieurs lignes ?

Mary-Kate Olsen
Libérer: 2025-01-11 07:06:45
original
461 Les gens l'ont consulté

How Can I Use MySQL's ON DUPLICATE KEY UPDATE for Multiple Row Inserts and Updates?

Insérer et mettre à jour efficacement plusieurs lignes dans MySQL à l'aide de ON DUPLICATE KEY UPDATE

La clause ON DUPLICATE KEY UPDATE de MySQL fournit une méthode simplifiée pour effectuer des opérations d'insertion et de mise à jour sur plusieurs lignes au sein d'une seule requête. Ceci est particulièrement utile lorsqu'il s'agit de clés uniques, pour éviter les erreurs et garantir la cohérence des données.

Scénario :

Envisagez un scénario dans lequel vous devez insérer plusieurs lignes dans un tableau, mais certaines lignes peuvent déjà exister en raison de valeurs de clé uniques en double. Au lieu de générer des erreurs, vous souhaitez mettre à jour les lignes existantes avec les nouvelles données.

Exemple :

Disons que vous disposez de l'instruction SQL suivante conçue pour insérer plusieurs lignes dans une table nommée beautiful :

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29);</code>
Copier après la connexion

Si name est une clé unique et que certains noms existent déjà, cette requête échouera. Pour gérer cela, nous utilisons ON DUPLICATE KEY UPDATE.

Solution :

Ajoutez la clause ON DUPLICATE KEY UPDATE à votre déclaration INSERT :

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE age = VALUES(age);</code>
Copier après la connexion
Copier après la connexion

Cette requête modifiée insérera de nouvelles lignes où le name est unique. Si un name en double est rencontré, seule la colonne age sera mise à jour avec la valeur fournie dans la clause VALUES.

Syntaxe moderne (MySQL 8.0.19 et versions ultérieures) :

MySQL 8.0.19 et versions ultérieures offrent une approche plus lisible utilisant des alias :

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) AS new ON DUPLICATE KEY UPDATE age = new.age;</code>
Copier après la connexion

Ici, AS new attribue un alias à la nouvelle ligne, vous permettant de référencer clairement ses champs (par exemple, new.age).

Ancienne syntaxe (versions MySQL antérieures à 8.0.19) :

Pour les anciennes versions de MySQL, le mot-clé VALUES est utilisé pour faire référence aux valeurs insérées :

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE age = VALUES(age);</code>
Copier après la connexion
Copier après la connexion

En utilisant ON DUPLICATE KEY UPDATE, vous pouvez gérer efficacement les insertions et les mises à jour au sein d'une seule instruction SQL, simplifiant ainsi votre code et améliorant les performances de la base de données.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal