Maison  >  Article  >  base de données  >  Comment effectuer des mises à jour conditionnelles dans INSERT... ON DUPLICATE KEY UPDATE de MySQL ?

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

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 00:13:30443parcourir

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

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!

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