"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-17
Parcourir:335

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 à l'aide de 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érez 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 

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 insérée (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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3