Hab' das gerade mal getestet und muß zugeben, daß das DUPLICATE KEY UPDATE absolut brilliant ist!
Klasse Tipp![]()
Jeder kennt es - es soll ein Datensatz in eine Tabelle eingetragen werden.
Die Tabelle hat ein Schlüsselfeld, das eindeutig ist.
Führt man einen Insert aus und der Key ist schon vorhanden, löst das ein Fehler aus, also muss man folgendes machen:
1. Abfragen ob der Key schon vorhanden ist
2. Ist vorhanden => UPDATE, sonst INSERT
Man muss also 2 Abfragen machen.
Findige User sagen: okay, probieren wir erst UPDATE
Die Methode hat einen Haken. MySQL überprüft bei einem UPDATE, ob es überhaupt neue Werte gibt. ist das nicht der Fall, macht es nichts, die Rückgabe der betroffenen Datensätze wäre dann 0.PHP-Code:mysql_query("UPDATE tabelle SET ...");
if(!mysql_affected_rows() {
mysql_query("INSERT INTO tabelle SET ...");
}
Unsere Abfrage würde greifen, einen INSERT durchführen und einen Fehler auslösen.
MySQL hat einen pfiffigen Befehl, der die ganze Problematik umgeht:
Ich finde das eine sehr praktische Sache und schätze, das kaum einer diesen Syntax kennt.Code:INSERT INTO tabelle SET ... ON DUPLICATE KEY UPDATE timestamp=UNIX_TIMESTAMP();
weiter Infos: http://dev.mysql.com/doc/refman/5.1/...duplicate.html
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Hab' das gerade mal getestet und muß zugeben, daß das DUPLICATE KEY UPDATE absolut brilliant ist!
Klasse Tipp![]()
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
spitzenmässig, steffen. Baue eben ein DB basiertes Sessionhandling und habe mich an diesen Tipp erinnert, kommt wie gerufen!![]()
Wer sabotiert eigentlich ständig meine Signatur?
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)