Вярвам, че отговорът на това е адресиран в 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;