Sven Rautenberg: MySQL - UPDATE, wenn Datensatz vorhanden, sonst INSERT

Beitrag lesen

Moin!

Ich möchte einen Datensatz aktualisieren, mittels UPDATE. Ich lasse also einen UPDATE-Befehl ausführen. Wenn der Datensatz noch nicht vorhanden ist, dann kann natürlich nichts aktualisiert werden. Wie finde ich diesen Fall heraus?

Ein SELECT machen, entsprechend verzweigen.

Es gibt Alternativen:
1. REPLACE ist eine Operation, die zwingend einen Primärschlüssel oder einen UNIQUE Index benötigt, damit Datensätze eindeutig identifiziert werden können. Ein REPLACE wirkt dann immer wie eine nicht teilbare DELETE/INSERT-Operation - mit allen damit verbundenen Auswirkungen, z.B. auf Timestamps.

2. INSERT ... ON DUPLICATE KEY UPDATE ... funktioniert ab MySQL 4.1 und versucht das INSERT - wenn ein Primärindex oder Unique-Index aber dabei doppelt auftreten würde, wird die existierende Spalte mit dem (ggf. auch modifizierten) UPDATE bearbeitet. Siehe http://dev.mysql.com/doc/refman/4.1/en/insert.html

- Sven Rautenberg

--
My sssignature, my preciousssss!