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;