hotti: MySQL-Fehler 1062, Doppler-ID finden

Beitrag lesen

moin,

Füge "a" ein in Tabelle, wenn Doppler dann verändere den Key(also ID), was aber ja kontraproduktiv wäre und somit nicht sein kann. Also was genau macht "on duplicate key update id=last_insert_id(id)"? Für Dummys ;-)

on duplicate key greift immer dann, wenn in das Feld, was mit unique deklariert ist, derselbe Wert erneut eingefügt werden soll.

Die mysql Funktion LAST_INSERT_ID(id) ===beachte den Feldnamen im Argument=== liefert bei der nächsten Abfrage exakt den bereits vorhandenen auto_increment-Wert. In meinem zusätzlichen Feld wird in diesem Fall (on duplicate key) der Wert erhöht. Somit kannst du feststellen, ob es sich um einen neuen Eintrag handelt (upt ist =0).

Wenn der Wert im Feld upt > 0 ist, wurden Inserts ausgeführt mit doppelten Einträgen, das kann jedoch auch in der Vergangenheit liegen. Zur Laufzeit ist es damit also auch nicht feststellbar, ob das gerade in dem Moment passiert oder irgendwann einmal vorher. Wenn Du das ganz genau brauchst, setze einen Trigger der beim Update zuschlägt und eine History-Tabelle beschreibt.

Horst