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