Jag tror att svaret på detta tas upp i MySQL dokument :
Om en tabell innehåller en AUTO_INCREMENT
kolumn och INSERT
... UPDATE
infogar en rad, LAST_INSERT_ID()
funktionen returnerar AUTO_INCREMENT
värde. Om satsen uppdaterar en rad istället, LAST_INSERT_ID()
är inte meningsfullt. Du kan dock undvika detta genom att använda LAST_INSERT_ID(expr)
. Anta att id är AUTO_INCREMENT
kolumn. För att göra LAST_INSERT_ID()
meningsfullt för uppdateringar, infoga rader enligt följande:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;