Bedingte Aktualisierung in INSERT ... ON DUPLICATE KEY UPDATE
In MySQL ermöglicht die INSERT ... ON DUPLICATE KEY UPDATE-Syntax dies Automatische Aktualisierung der Tabellendaten, wenn während eines Einfügevorgangs ein doppelter Schlüssel gefunden wird. Der UPDATE-Teil der Abfrage unterstützt jedoch nicht die Verwendung einer WHERE-Klausel zur Angabe bedingter Aktualisierungen.
Problemumgehung mit IF()
Um diese Einschränkung zu überwinden, Man kann die IF()-Funktion verwenden, um bedingte Aktualisierungen innerhalb der ON DUPLICATE KEY UPDATE-Klausel zu implementieren. Die Funktion IF() wertet eine Bedingung aus und gibt basierend auf dem Ergebnis einen anderen Wert zurück.
Betrachten Sie beispielsweise die folgende INSERT ... ON DUPLICATE KEY UPDATE-Anweisung:
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_atIn dieser Anweisung prüft die IF()-Funktion, ob der Wert der Spalte last_event_created_at in der Datenbanktabelle kleiner als der ist Wert, der eingefügt wird (VALUES(last_event_created_at)). Bei „true“ wird die Spalte „last_event_id“ mit dem neuen Wert aus der INSERT-Anweisung aktualisiert. Andernfalls bleibt der vorhandene Wert unverändert.
Diese Problemumgehung ermöglicht bedingte Aktualisierungen in INSERT ... ON DUPLICATE KEY UPDATE-Anweisungen, ohne auf Kombinationen von INSERT/UPDATE/SELECT-Abfragen zurückgreifen zu müssen, die möglicherweise nicht für die Replikation geeignet sind Szenarien.
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