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

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

Barbara Streisand
Libérer: 2024-12-13 15:07:10
original
186 Les gens l'ont consulté

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

Gérer les doublons avec des insertions et des mises à jour conditionnelles dans MySQL

Lorsque vous travaillez avec des bases de données, il est souvent nécessaire de gérer des situations dans lesquelles des enregistrements avec la même valeur unique peuvent devoir être soit inséré, soit mis à jour. MySQL fournit une solution pratique pour ce scénario grâce à sa syntaxe INSERT ... ON DUPLICATE KEY UPDATE.

Considérez la situation décrite dans la question. Un utilisateur souhaite insérer de nouvelles données dans la table AggregatedData. Cependant, ils souhaitent que ces données soient insérées uniquement si le champ datenum n'existe pas déjà dans la table. S'il existe, ils souhaitent mettre à jour le champ Timestamp avec la nouvelle valeur.

L'approche initiale utilisée par l'utilisateur impliquait une instruction UPDATE :

UPDATE AggregatedData SET datenum="734152.979166667", Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667";
Copier après la connexion

Alors que cette instruction fonctionnerait si la valeur datenum existe déjà, elle échouerait si la valeur n'est pas présente dans le tableau. Pour gérer cette situation efficacement, INSERT ... ON DUPLICATE KEY UPDATE entre en jeu.

La syntaxe correcte pour cette opération est :

INSERT INTO AggregatedData (datenum, Timestamp)
VALUES ("734152.979166667", "2010-01-14 23:30:00.000")
ON DUPLICATE KEY UPDATE 
  Timestamp=VALUES(Timestamp)
Copier après la connexion

Dans cette instruction :

  • La partie INSERT ... tente d'insérer une nouvelle ligne dans la table avec les données spécifiées.
  • La CLÉ ON DUPLICATE La partie UPDATE ... spécifie quoi faire si une ligne avec la même valeur de datenum existe déjà. Dans ce cas, il met à jour le champ Timestamp avec la valeur fournie dans la clause VALUES(Timestamp).

Grâce à cette approche, l'utilisateur peut s'assurer que de nouvelles données sont insérées lorsque le datenum est unique, et ces données existantes sont mises à jour lorsque le datenum est un doublon. Le champ datenum n'a pas besoin d'être inclus dans la clause UPDATE car il ne peut pas être modifié.

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