Credo che la risposta a questa domanda sia affrontata in MySQL documenti :
Se una tabella contiene un AUTO_INCREMENT
colonna e INSERT
... UPDATE
inserisce una riga, il LAST_INSERT_ID()
la funzione restituisce il AUTO_INCREMENT
valore. Se invece l'istruzione aggiorna una riga, LAST_INSERT_ID()
non è significativo. Tuttavia, puoi aggirare il problema utilizzando LAST_INSERT_ID(expr)
. Supponiamo che id sia il AUTO_INCREMENT
colonna. Per creare LAST_INSERT_ID()
significativo per gli aggiornamenti, inserire le righe come segue:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;