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
Libérer: 2025-01-21 11:47:11
original
554 Les gens l'ont consulté

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 :

INSERT INTO `usage`
(`thing_id`, `times_used`, `first_time_used`)
VALUES
(4815162342, 1, NOW())
ON DUPLICATE KEY UPDATE
`times_used` = `times_used` + 1
Copier après la connexion

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal