Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

AUTO_INCREMENT e LAST_INSERT_ID

SELECT max(employeeid) FROM Employee;

A consulta acima retorna o valor de employeeid do último registro inserido na tabela Employee porque employeeid é uma coluna de incremento automático. Isso parece estar certo, mas suponha que dois threads estão executando a operação de inserção simultaneamente, há uma chance de você obter o id errado do último registro inserido!

Não se preocupe, o MySQL fornece uma função que retorna o valor da coluna de incremento automático do último registro inserido.
SELECT LAST_INSERT_ID();

LAST_INSERT_ID() é sempre específico da conexão , isso significa que mesmo que a operação de inserção seja realizada simultaneamente a partir de diferentes conexões, ela sempre retorna o valor da operação específica da conexão atual.

Então você precisa primeiro inserir o registro na tabela Employee, executar a consulta acima para obter o valor do id e usar isso para inserir na segunda tabela.