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

Comment INSERT ... ON DUPLICATE KEY UPDATE de MySQL peut-il simplifier les insertions et les mises à jour conditionnelles ?

Barbara Streisand
Libérer: 2025-01-21 12:04:14
original
240 Les gens l'ont consulté

How Can MySQL's INSERT ... ON DUPLICATE KEY UPDATE Simplify Conditional Inserts and Updates?

Instruction INSERT ... ON DUPLICATE KEY UPDATE de MySQL : insertion et mise à jour conditionnelles simplifiées

Lorsque vous utilisez une base de données relationnelle telle que MySQL, vous devrez peut-être effectuer des opérations d'insertion ou de mise à jour de manière conditionnelle. Cela se produit lorsque vous devez créer un nouvel enregistrement s'il n'existe pas ou mettre à jour un enregistrement s'il existe déjà. L'approche traditionnelle consiste à utiliser une combinaison de requêtes SELECT et INSERT ou UPDATE, ce qui peut devenir complexe et inefficace.

Heureusement, MySQL propose une solution plus élégante : l'instruction INSERT ... ON DUPLICATE KEY UPDATE. Cette commande polyvalente permet d'insérer une ligne si l'enregistrement n'existe pas, ou de mettre à jour une ligne si une ligne avec la même clé existe déjà dans la table.

Grammaire :

<code class="language-sql">INSERT INTO `table_name` (`column_list`)
VALUES (`value_list`)
ON DUPLICATE KEY UPDATE `column_name` = `new_value`</code>
Copier après la connexion

Comment ça marche :

  • La requête suit la syntaxe INSERT standard, spécifie la table cible et fournit une liste de colonnes et leurs valeurs correspondantes.
  • S'il n'existe aucune ligne avec une clé primaire ou une valeur de clé unique correspondante, insérez une nouvelle ligne dans le tableau.
  • S'il y a des lignes avec la même valeur de clé, la clause ON DUPLICATE KEY UPDATE spécifie quelles colonnes doivent être mises à jour avec quelles valeurs fournies.

Exemple :

Considérons l'exemple suivant :

<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
  • Si thing_id a une valeur de clé primaire de 4815162342 qui n'existe pas, insérez une nouvelle ligne dans la table usage en utilisant la valeur spécifiée.
  • Si thing_id a déjà une valeur de clé primaire de 4815162342, mettez à jour la colonne times_used en ajoutant 1 à sa valeur actuelle.

Avantages :

  • Syntaxe simplifiée : INSERT ... ON DUPLICATE KEY UPDATE fournit un moyen concis et clair d'effectuer des opérations d'insertion et de mise à jour à l'aide d'une seule requête.
  • Efficacité : Cela évite les requêtes SELECT inutiles pour vérifier les enregistrements existants, réduisant ainsi la charge de travail de la base de données et améliorant les performances.
  • Impuissance : Cette opération est idempotente, ce qui signifie que son exécution plusieurs fois ne modifiera pas les données et ne déclenchera aucune erreur. Cela simplifie le traitement du code et garantit l’intégrité des données.

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