A resposta é:bem, depende.
No caso do myisam, a resposta é um sim definitivo, pois as sequências do myisam inserem solicitações.
No caso do innodb, entretanto, o comportamento é configurável desde o mysql v5.1. antes da v5.1, a resposta para InnoDB também é sim, depois depende do
innodb_autoinc_lock_mode
contexto. Consulte a documentação do mysql em configuração do InnoDB auto_increment para obter detalhes
. Para lhe dar os destaques, existem 3
innodb_autoinc_lock_mode
definições:- tradicional (0)
- consequente (1) - padrão
- intercalado (2)
Outras lacunas podem ocorrer no valor auto_increment, se uma transação tiver sido revertida. Uma inserção em massa só pode ser revertida como um todo.
ATUALIZAÇÃO: Conforme descrito acima, você terá o cenário 1) ou 2) , se você usar
- mecanismo de tabela myisam
- ou innodb pré mysql v5.1
- ou innodb com mysql v5.1 ou mais recente e o
innodb_autoinc_lock_mode
é 0 ou 1
Não há como dizer qual é inserido primeiro.
Você pode obter cenário 3) ou 4) se você usar
- innodb com
innodb_autoinc_lock_mode
2
Novamente, não há como dizer como e por que o mysql mistura a ordem dos registros.
Então, se sua pergunta está relacionada ao fato de você inserir 3 registros com inserção em massa e last_insert_id() retorna o valor de auto_increment apenas do primeiro registro inserido, e você deseja obter os ids dos outros 2 registros por simples adição é que você pode ser necessário verificar a configuração do mysql com base no mecanismo de tabela e na versão do mysql usada.