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_at < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);
In Mit dieser Anweisung prüft die Funktion IF(), ob der Wert der Spalte last_event_created_at in der Datenbanktabelle kleiner ist als der eingefügte Wert (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.
Das obige ist der detaillierte Inhalt vonWie führe ich bedingte Aktualisierungen in MySQLs INSERT ... ON DUPLICATE KEY UPDATE durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!