Heim  >  Artikel  >  Datenbank  >  Wie führe ich bedingte Aktualisierungen in MySQLs INSERT ... ON DUPLICATE KEY UPDATE durch?

Wie führe ich bedingte Aktualisierungen in MySQLs INSERT ... ON DUPLICATE KEY UPDATE durch?

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 00:13:30443Durchsuche

How to Perform Conditional Updates in MySQL's INSERT ... ON DUPLICATE KEY UPDATE?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn