INSERT + UPDATE SQL
MichaelR
- datenbank
0 Frank (no reg)0 kungschu0 Rouven
Hallo,
ich hab folgendes Problem: Eine Tabelle soll aktualisiert werden, d. h. entweder wird ein neuer Datensatz mittels INSERT eingefügt oder falls bereits ein solcher existiert, soll er aktualisiert werden (normalerweise mit UPDATE).
Gibt es eine Möglichkeit bei MySQL einen kombinierten Insert/Update-Befehl auszuführen? D.h. ist ein Datensatz mit einem bestimmten Merkmal nicht vorhanden soll er hinzugefügt werden, andernfalls mit den neuen Werten aktualisiert werden.
Grüße,
Michael
Hi,
du kannst z.b. zuerst den UPDATE Befehl schicken, danach überprüfen, wieviele Rows/Records betroffen sind und wenn dem gleich 0 ist, dann führst du das INSERT aus. Die PHP-MySQL Funktion heisst sogar mysql_affected_rows, da schau an.
Je nach Version von MySQL kannst du diese Logik auch evt in eine Stored Procedure packen und den Zugriff zu abstrahieren.
Gruss
Frank
Hallo.
D.h. ist ein Datensatz mit einem bestimmten Merkmal nicht vorhanden soll er hinzugefügt werden, andernfalls mit den neuen Werten aktualisiert werden.
Das könntest du doch mit einer einfachen if-else-Anweisung lösen, oder?
MfG, Kungschu.
Hallo,
D.h. ist ein Datensatz mit einem bestimmten Merkmal nicht vorhanden soll er hinzugefügt werden, andernfalls mit den neuen Werten aktualisiert werden.
Das könntest du doch mit einer einfachen if-else-Anweisung lösen, oder?
Wie denn?
Also, das was ich bisher im Sinn hatte, war eine Abfrage zu machen, ob der Datensatz existiert, falls ja ein UPDATE nachzuschieben. Falls kein Datensatz existiert dann ein INSERT.
Aber der Vorschlag von Frank klingt auch gut, den probiere ich grad :-)
Grüße,
Michael
Hallo.
Also, das was ich bisher im Sinn hatte, war eine Abfrage zu machen, ob der Datensatz existiert, falls ja ein UPDATE nachzuschieben. Falls kein Datensatz existiert dann ein INSERT.
So hatte ich es im Prinzip gemeint.
Aber der Vorschlag von Frank klingt auch gut, den probiere ich grad :-)
Das ist der professionelle Vorschlag; verfolge ihn.
MfG, Kungschu.
Hello,
Gibt es eine Möglichkeit bei MySQL einen kombinierten Insert/Update-Befehl auszuführen? D.h. ist ein Datensatz mit einem bestimmten Merkmal nicht vorhanden soll er hinzugefügt werden, andernfalls mit den neuen Werten aktualisiert werden.
INSERT...ON DUPLICATE KEY UPDATE...
MfG
Rouven