Maison > base de données > tutoriel mysql > le corps du texte

Comment effectuer des mises à jour conditionnelles dans INSERT... ON DUPLICATE KEY UPDATE de MySQL ?

Linda Hamilton
Libérer: 2024-10-31 00:13:30
original
441 Les gens l'ont consulté

How to Perform Conditional Updates in MySQL's INSERT ... ON DUPLICATE KEY UPDATE?

Mise à jour conditionnelle dans INSERT ... ON DUPLICATE KEY UPDATE

Dans MySQL, la syntaxe INSERT ... ON DUPLICATE KEY UPDATE permet mise à jour automatique des données de la table lorsqu'une clé en double est rencontrée lors d'une opération d'insertion. Cependant, la partie UPDATE de la requête ne prend pas en charge l'utilisation d'une clause WHERE pour spécifier des mises à jour conditionnelles.

Solution de contournement utilisant IF()

Pour surmonter cette limitation, on peut utiliser la fonction IF() pour implémenter des mises à jour conditionnelles dans la clause ON DUPLICATE KEY UPDATE. La fonction IF() évalue une condition et renvoie une valeur différente en fonction du résultat.

Par exemple, considérons l'instruction INSERT ... ON DUPLICATE KEY UPDATE suivante :

INSERT INTO daily_events (created_on, last_event_id, last_event_created_at)
VALUES ('2010-01-19', 23, '2010-01-19 10:23:11')
ON DUPLICATE KEY UPDATE
  last_event_id = IF(last_event_created_at < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);
Copier après la connexion

Dans cette instruction, la fonction IF() vérifie si la valeur de la colonne last_event_created_at dans la table de base de données est inférieure à la valeur en cours d'insertion (VALUES(last_event_created_at)). Si c'est vrai, il met à jour la colonne last_event_id avec la nouvelle valeur de l'instruction insert. Sinon, la valeur existante reste inchangée.

Cette solution de contournement permet des mises à jour conditionnelles dans les instructions INSERT ... ON DUPLICATE KEY UPDATE sans recourir à des combinaisons de requêtes INSERT/UPDATE/SELECT, qui peuvent ne pas convenir à la réplication. scénarios.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!