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

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

DDD
DDDOriginal
2024-10-30 22:46:29345Durchsuche

How to Perform Conditional Updates in INSERT ... ON DUPLICATE KEY UPDATE Statements?

INSERT ... ON DUPLICATE KEY UPDATE: Bedingte Aktualisierungen

Beim Ausführen einer INSERT ... ON DUPLICATE KEY UPDATE-Operation ist dies der Fall Manchmal ist es erforderlich, das Update basierend auf bestimmten Bedingungen bedingt auszuführen. Die WHERE-Klausel ist jedoch mit dem UPDATE-Teil dieser Anweisung nicht zulässig.

Problemumgehung mit IF()

Um bedingte Aktualisierungen zu erreichen, besteht eine Lösung darin, die zu verwenden IF()-Funktion. Durch die Auswertung einer Bedingung innerhalb des IF()-Ausdrucks können Sie basierend auf dem Ergebnis einen anderen Wert für die aktualisierte Spalte angeben.

Beispiel

Beachten Sie die folgende Tabelle:

CREATE TABLE daily_events (
  created_on DATE,
  last_event_id INT,
  last_event_created_at DATETIME
);

Um die Spalte last_event_id nur dann bedingt zu aktualisieren, wenn sich die Spalte last_event_created_at geändert hat, können Sie die folgende Abfrage verwenden:

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 prüft die Funktion IF(), ob Der Wert von last_event_created_at in der Datenbank ist kleiner als der eingefügte Wert. Wenn „true“, wird die last_event_id auf den eingefügten Wert aktualisiert; andernfalls bleibt der vorhandene Wert erhalten.

Replikationskompatibilität

Dieser Ansatz ist mit der Replikation kompatibel, da keine zusätzlichen Abfragen oder Änderungen am Datenbankschema erforderlich sind.

Das obige ist der detaillierte Inhalt vonWie führe ich bedingte Aktualisierungen in INSERT ... ON DUPLICATE KEY UPDATE-Anweisungen 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