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

Recuperando os últimos IDs inseridos para várias linhas


Chamar last_insert_id() fornece o id da PRIMEIRA linha inserida no último lote. Todos os demais inseridos, são garantidos como sequenciais.

A menos que você esteja fazendo algo muito estranho, isso permite que você calcule o ID de cada linha com bastante facilidade.

Na verdade o comportamento varia em 5.1 dependendo da configuração do parâmetro innodb auto increment mode; isso não deveria importar. Contanto que você não altere o padrão, você verá o comportamento esperado.

Existem casos ocasionais em que isso não faz o que você espera e não é útil - como se você fizer um ON DUPLICATE KEY UPDATE ou INSERT IGNORE. Nesses casos, você precisará fazer outra coisa para descobrir os IDs de cada linha.

Mas para um lote INSERT simples, sem valores especificados para a coluna auto-inc, é fácil.

Uma descrição completa de como os incrementos automáticos são tratado no innodb está aqui