Věřím, že odpověď na toto je řešena v MySQL dokumenty :
Pokud tabulka obsahuje AUTO_INCREMENT a INSERT ... UPDATE vloží řádek, LAST_INSERT_ID() funkce vrací AUTO_INCREMENT hodnota. Pokud příkaz místo toho aktualizuje řádek, LAST_INSERT_ID() není smysluplné. Můžete to však obejít pomocí LAST_INSERT_ID(expr) . Předpokládejme, že id je AUTO_INCREMENT sloupec. Chcete-li vytvořit LAST_INSERT_ID() smysluplné pro aktualizace, vložte řádky následovně:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;