Mysql
 sql >> Database >  >> RDS >> Mysql

AUTO_INCREMENT e LAST_INSERT_ID

SELECT max(employeeid) FROM Employee;

La query precedente restituisce il valore di employeeid dell'ultimo record inserito nella tabella Dipendente perché employeeid è una colonna di incremento automatico. Questo sembra andare bene, ma supponiamo due thread stanno eseguendo l'operazione di inserimento contemporaneamente, è possibile che tu abbia sbagliato l'ID dell'ultimo record inserito!

Non preoccuparti, MySQL fornisce una funzione che restituisce il valore della colonna di incremento automatico dell'ultimo record inserito.

SELECT LAST_INSERT_ID();

LAST_INSERT_ID() è sempre specifico della connessione , ciò significa che anche se l'operazione di inserimento viene eseguita contemporaneamente da connessioni diverse, restituisce sempre il valore dell'operazione specifica della connessione corrente.

Quindi devi prima inserire il record nella tabella Employee, eseguire la query sopra per ottenere il valore id e usarlo per inserirlo nella seconda tabella.