Maison > base de données > tutoriel mysql > Comment INSERT ... ON DUPLICATE KEY UPDATE de MySQL peut-il gérer efficacement les insertions et les mises à jour ?

Comment INSERT ... ON DUPLICATE KEY UPDATE de MySQL peut-il gérer efficacement les insertions et les mises à jour ?

Barbara Streisand
Libérer: 2025-01-21 11:57:09
original
960 Les gens l'ont consulté

How Can MySQL's INSERT ... ON DUPLICATE KEY UPDATE Efficiently Handle Inserts and Updates?

Upsert efficace de MySQL : INSÉRER... SUR LA MISE À JOUR DE LA CLÉ EN DOUBLE

MySQL est fréquemment confronté à des scénarios nécessitant soit l'insertion d'une nouvelle ligne, soit la mise à jour d'une ligne existante en fonction de la présence d'une clé. Cette opération combinée, connue sous le nom d'upsert (ou de fusion), est gérée avec élégance dans MySQL à l'aide d'une seule instruction.

Tirer parti de INSERT... SUR LA MISE À JOUR DE CLÉ EN DOUBLE

Au lieu de plusieurs requêtes, l'instruction INSERT ... ON DUPLICATE KEY UPDATE de MySQL rationalise ce processus. Sa syntaxe est simple :

<code class="language-sql">INSERT INTO `table_name`
(`column1`, `column2`, ...)
VALUES
(`value1`, `value2`, ...)
ON DUPLICATE KEY UPDATE
`column1` = `value1`,
`column2` = `value2`,
...</code>
Copier après la connexion

Application pratique : incrémenter le nombre d'utilisations

Imaginez un tableau usage avec les colonnes thing_id, times_used et first_time_used. Le but est d'augmenter times_used pour un thing_id donné si la ligne existe ; sinon, insérez une nouvelle ligne.

Cette tâche est facilement accomplie en utilisant INSERT ... ON DUPLICATE KEY UPDATE :

<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>
Copier après la connexion

Cette requête gère intelligemment les deux scénarios : si thing_id 4815162342 existe, times_used est incrémenté ; sinon, une nouvelle ligne est ajoutée avec les valeurs spécifiées. Cela démontre l'efficacité et la concision de la fonctionnalité d'insertion de MySQL.

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