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_atDans 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.
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