Maison > base de données > tutoriel mysql > Comment la mise à jour de clé en double de MySQL peut-elle gérer les insertions et les mises à jour simultanées de plusieurs lignes ?

Comment la mise à jour de clé en double de MySQL peut-elle gérer les insertions et les mises à jour simultanées de plusieurs lignes ?

Linda Hamilton
Libérer: 2025-01-11 07:02:41
original
958 Les gens l'ont consulté

How Can MySQL's ON DUPLICATE KEY UPDATE Handle Simultaneous Inserts and Updates of Multiple Rows?

MySQL ON DUPLICATE KEY UPDATE : gestion efficace des insertions et des mises à jour simultanées sur plusieurs lignes

Lors de l'insertion de plusieurs lignes dans une table MySQL, des situations surviennent où vous devez vérifier la présence d'une clé unique (distincte de la clé primaire) avant de mettre à jour les enregistrements existants. La clause ON DUPLICATE KEY UPDATE offre une solution élégante.

MySQL 8.0.19 et les versions ultérieures offrent une syntaxe améliorée utilisant des alias pour les lignes insérées. Cela permet des mises à jour plus propres et plus lisibles :

<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

Pour les versions MySQL antérieures à 8.0.19 (notez que la méthode VALUES est obsolète depuis la version 8.0.20), l'approche suivante était nécessaire :

<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

Dans les deux exemples, si un conflit de clé unique survient lors de l'insertion, la ligne affectée est mise à jour avec les valeurs fournies. Sinon, une nouvelle ligne est ajoutée.

Il est essentiel de se rappeler que VALUES dans ON DUPLICATE KEY UPDATE ne fait pas référence à la valeur de la ligne existante, mais plutôt à la valeur de la colonne correspondante de la tentative d'insertion d'une nouvelle ligne.

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