Hello,
ich hätte aus Deinem Posting geschlossen, dass Konstanza REPLACE verwenden sollte, schließlich hast Du dies im Gegensatz zu INSERT ... ON DUPLICATE KEY UPDATE verlinkt. REPLACE halte ich jedoch für den Anwendungsfall für völlig ungeeignet - ich hätte daher REPLACE überhaupt nicht erwähnt und erst recht keinen Link auf die Seite gesetzt. Ich fand Deinen Beitrag daher ein klein wenig irreführend und ich habe ihn zielführend ergänzt.
Ja, sorry, irreführen wollte ich natürlich niemanden.
Aber wenn man die verlinkte Seite durchliest, kommt kan ja an die von mir erwähnte Stelle.
So war es auch gemeint.
Also nochmal zur Klarstellung http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
Das ist auf jeden Fall die passende Lösung.
Erst in der Datenbank mot Select zu suchen, um dann alternativ ein Update oder ein Insert vorzunehmen ist jedenfalls keine gute Lösung, weil man meistens ein Zeitdifferenz-Problem ("TOCTOU") baut damit.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg