Maison >base de données >tutoriel mysql >Comment INSERT ... ON DUPLICATE KEY UPDATE de MySQL gère-t-il les opérations d'insertion ?

Comment INSERT ... ON DUPLICATE KEY UPDATE de MySQL gère-t-il les opérations d'insertion ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-21 11:41:10795parcourir

How Does MySQL's INSERT ... ON DUPLICATE KEY UPDATE Handle Upsert Operations?

Opération Upsert efficace de MySQL : utilisez INSERT ... ON DUPLICATE KEY UPDATE

Dans la gestion de bases de données MySQL, il est souvent nécessaire d'insérer de nouvelles lignes ou de mettre à jour les lignes existantes selon que les données existent ou non. C'est ce qu'on appelle une opération "Upsert" (insertion ou mise à jour).

MySQL fournit la syntaxe INSERT ... ON DUPLICATE KEY UPDATE pour implémenter efficacement la fonction Upsert. Voici comment cela fonctionne :

<code class="language-sql">INSERT INTO `table_name`
(`column1`, `column2`, ...)
VALUES
(value1, value2, ...)
ON DUPLICATE KEY UPDATE
`column1` = value1_updated,
`column2` = value2_updated,
...</code>
La clause

INSERT précise la valeur à insérer dans le tableau. La clause ON DUPLICATE KEY UPDATE définit quoi faire lorsqu'une ligne avec la même clé primaire (ou index unique) existe déjà dans la table.

Par exemple, considérons le tableau suivant :

<code class="language-sql">CREATE TABLE `usage` (
    `thing_id` INT NOT NULL PRIMARY KEY,
    `times_used` INT DEFAULT 0,
    `first_time_used` TIMESTAMP
);</code>

Si vous souhaitez insérer de nouvelles données pour la ligne thing_id pour 4815162342, incrémentez la colonne times_used de 1 et définissez first_time_used sur l'horodatage actuel, vous pouvez utiliser la requête Upsert suivante :

<code class="language-sql">INSERT INTO `usage`
(`thing_id`, `times_used`, `first_time_used`)
VALUES
(4815162342, 1, NOW())
ON DUPLICATE KEY UPDATE
`times_used` = `times_used` + 1</code>

Si une ligne avec thing_id pour 4815162342 existe déjà, la requête mettra à jour la colonne times_used tandis que first_time_used reste inchangé. Sinon, une nouvelle ligne sera insérée.

INSERT ... ON DUPLICATE KEY UPDATE est une technologie flexible et efficace pour effectuer des opérations Upsert dans MySQL. Il vous permet d'effectuer des opérations d'insertion et de mise à jour à l'aide d'une seule requête, simplifiant ainsi votre code et améliorant les performances.

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!

Déclaration:
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