Quando faço uma única linha INSERT
em uma tabela que possui uma AUTO_INCREMENT
coluna, gostaria de usar a LAST_INSERT_ID()
função para retornar o novo AUTO_INCREMENT
valor armazenado para essa linha.
Como muitos desenvolvedores e administradores do Microsoft SQL Server, sem dúvida, sabem que a funcionalidade equivalente no SQL Server ( SCOPE_IDENTITY
e @@IDENTITY
) não ficou isenta de problemas .
Eu sei o estado dos documentos do MySQL:
O ID que foi gerado é mantido no servidor por conexão . Isso significa que o valor retornado pela função para um determinado cliente é o primeiro
AUTO_INCREMENT
valor gerado para a instrução mais recente que afeta umaAUTO_INCREMENT
coluna por esse cliente . Este valor não pode ser afetado por outros clientes, mesmo que eles geremAUTO_INCREMENT
valores próprios. Esse comportamento garante que cada cliente possa recuperar seu próprio ID sem se preocupar com a atividade de outros clientes e sem a necessidade de bloqueios ou transações.
e até chega a dizer:
Usar
LAST_INSERT_ID()
eAUTO_INCREMENT
colunas simultaneamente de vários clientes é perfeitamente válido.
Existem riscos ou cenários conhecidos que podem causar a LAST_INSERT_ID()
não devolução do valor correto?
Estou usando o MySQL 5.5 no CentOS 5.5 x64 e Fedora 16 x64 e no mecanismo InnoDB.