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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 06:42:30608parcourir

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

UPDATE conditionnelle dans INSERT ... ON DUPLICATE KEY Update

Dans MySQL, l'instruction INSERT ... ON DUPLICATE KEY UPDATE vous permet pour insérer une nouvelle ligne ou mettre à jour une ligne existante si la ligne avec la même clé unique existe déjà. Cependant, vous pouvez parfois exiger que la partie mise à jour soit conditionnelle, et ne s'exécuter que si une condition spécifique est remplie.

Malheureusement, la clause WHERE n'est pas prise en charge dans la syntaxe ON DUPLICATE KEY UPDATE. Pour surmonter cette limitation, vous pouvez utiliser la fonction IF() dans la clause UPDATE.

La fonction IF() prend trois arguments : une condition, une valeur à renvoyer si la condition est vraie et une valeur à return si la condition est fausse. Cela vous permet de spécifier une condition qui vérifie si la condition supplémentaire a changé, puis de définir conditionnellement la valeur à mettre à jour.

Par exemple, considérons l'instruction 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 colonne last_event_id ne sera mise à jour que si la colonne last_event_created_at de la ligne existante est antérieure à la valeur de la clause VALUES. Sinon, le last_event_id restera inchangé.

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