„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie implementiert man bedingte Aktualisierungen mit INSERT ... ON DUPLICATE KEY in SQL?

Wie implementiert man bedingte Aktualisierungen mit INSERT ... ON DUPLICATE KEY in SQL?

Veröffentlicht am 09.01.2025
Durchsuche:426

How to Implement Conditional Updates with INSERT ... ON DUPLICATE KEY in SQL?

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

  • Bedenken Sie, dass IF() NULL ergibt, wenn die Bedingung falsch ist. Daher ist der aktualisierte Wert für last_event_id auch NULL, wenn die Bedingung nicht erfüllt ist.
  • Erwägen Sie die Verwendung einer zusätzlichen WHERE-Klausel oder einer separaten UPDATE-Abfrage, um die gewünschte Filterung der Aktualisierung sicherzustellen.
Neuestes Tutorial Mehr>

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