MISE À JOUR conditionnelle pour INSÉRER... SUR LA CLÉ EN DUPLICATE
L'insertion ou la mise à jour d'enregistrements basés sur des conditions de clé en double est un scénario courant dans la programmation de bases de données . Cependant, vous devrez parfois restreindre davantage la condition de mise à jour, la rendant dépendante de critères supplémentaires. Malheureusement, la syntaxe INSERT ... ON DUPLICATE KEY UPDATE ne prend pas en charge nativement les clauses WHERE pour les mises à jour conditionnelles.
Surmonter la limitation
Pour contourner cette limitation, vous peut utiliser la fonction IF() dans la clause UPDATE. La fonction IF() vous permet de spécifier une valeur alternative basée sur une expression logique donnée.
Exemple d'implémentation
Considérez l'INSERT suivant... SUR LA MISE À JOUR DE LA CLÉ EN DOUBLE requête :
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 requête, la clause UPDATE contient une instruction IF() qui vérifie si la valeur last_event_created_at existante est inférieure à la valeur insérée. Si la valeur existante est plus ancienne, la mise à jour sera effectuée en remplaçant last_event_id par la nouvelle valeur. Sinon, le last_event_id existant sera conservé.
Considérations supplémentaires
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!