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