Bedingte UPDATES für INSERT ... ON DUPLICATE KEY
Das Einfügen oder Aktualisieren von Datensätzen basierend auf doppelten Schlüsselbedingungen ist ein häufiges Szenario in der Datenbankprogrammierung . Allerdings kann es manchmal erforderlich sein, die Update-Bedingung weiter einzuschränken, sodass sie von zusätzlichen Kriterien abhängig ist. Leider unterstützt die INSERT ... ON DUPLICATE KEY UPDATE-Syntax WHERE-Klauseln für bedingte Aktualisierungen nicht nativ.
Überwindung der Einschränkung
Um diese Einschränkung zu umgehen, können Sie kann die Funktion IF() innerhalb der UPDATE-Klausel verwenden. Mit der Funktion IF() können Sie einen alternativen Wert basierend auf einem bestimmten logischen Ausdruck angeben.
Beispielimplementierung
Bedenken Sie Folgendes: INSERT ... ON DUPLICATE KEY UPDATE query:
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);
In dieser Abfrage enthält die UPDATE-Klausel eine IF()-Anweisung, die prüft, ob der vorhandene last_event_created_at-Wert kleiner als der ist Wert, der eingefügt wird. Wenn der vorhandene Wert älter ist, wird die Aktualisierung durchgeführt und die last_event_id durch den neuen Wert ersetzt. Andernfalls bleibt die vorhandene last_event_id erhalten.
Zusätzliche Überlegungen
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3