Uważam, że odpowiedź na to jest zawarta w MySQL dokumenty :
Jeśli tabela zawiera AUTO_INCREMENT
kolumna i INSERT
... UPDATE
wstawia wiersz, LAST_INSERT_ID()
funkcja zwraca AUTO_INCREMENT
wartość. Jeśli zamiast tego instrukcja aktualizuje wiersz, LAST_INSERT_ID()
nie ma znaczenia. Możesz jednak obejść ten problem, używając LAST_INSERT_ID(expr)
. Załóżmy, że identyfikator to AUTO_INCREMENT
kolumna. Aby wykonać LAST_INSERT_ID()
istotne dla aktualizacji, wstaw wiersze w następujący sposób:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;