Maison >base de données >tutoriel mysql >Comment puis-je effectuer efficacement des upserts dans MySQL ?

Comment puis-je effectuer efficacement des upserts dans MySQL ?

DDD
DDDoriginal
2025-01-21 11:47:11529parcourir

How Can I Efficiently Perform Upserts in MySQL?

Opération MySQL Upsert : mettre à jour s'il existe, insérer s'il n'existe pas

Question :

Dans MySQL, existe-t-il un moyen efficace d'effectuer une opération "Upsert", c'est-à-dire insérer une nouvelle ligne si elle n'existe pas, et mettre à jour la ligne existante si elle existe ?

Réponse :

Oui, MySQL fournit la syntaxe INSERT ... ON DUPLICATE KEY UPDATE pour réaliser cette fonctionnalité. Voici un exemple :

Exemple :

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

Instructions :

    La clause
  • INSERT INTO tente d'insérer une nouvelle ligne avec la valeur spécifiée.
  • La clause
  • ON DUPLICATE KEY UPDATE définit ce qui doit se passer si un conflit de clé unique se produit (c'est-à-dire si une ligne avec le même thing_id existe déjà).
  • Dans cet exemple, la ligne existante est mise à jour en ajoutant 1 à la colonne times_used.

Avantages :

  • Efficace : Effectuez des opérations Upsert via une seule requête, réduisant ainsi le nombre d'allers-retours dans la base de données.
  • Sécurité : Gérez en douceur les conflits de lignes en double et garantissez l'intégrité des données.
  • Flexible : peut être utilisé pour insérer de nouvelles lignes, mettre à jour des lignes existantes, ou les deux.

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