Вярвам, че отговорът на това е адресиран в MySQL документи :
Ако таблица съдържа AUTO_INCREMENT колона и INSERT ... UPDATE вмъква ред, LAST_INSERT_ID() функцията връща AUTO_INCREMENT стойност. Ако вместо това операторът актуализира ред, LAST_INSERT_ID() не е смислено. Можете обаче да заобиколите това, като използвате LAST_INSERT_ID(expr) . Да предположим, че id е AUTO_INCREMENT колона. За да направите LAST_INSERT_ID() има значение за актуализации, вмъкнете редове, както следва:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;