Hello,
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;
>
> Und was passiert mit Relationen bei diesem Statement?
> Sind die dann anschließend kaputt?
LAST\_INSERT\_ID() bezieht sich auf die Session mit der DB. Die Rückgabe dieser Funktion ist unabhängig davon, in welcher Relation ein auto\_increment-Wert erhöht wurde.
Der Hack besteht nun darin, LAST\_INSERT\_ID(expr) zu verwenden, expr ist in meinem Fall das Feld 'id' und damit liefert LAST\_INSERT\_ID(id) die gewünschte id bei einem UPDATE.
Es ist also unnötig, das Ermitteln der id über einen eigenen Code zu ziehen, wenn dies die Engine selbst tun kann.
Schönen Sonntag,
Hotti