pergunta mysql fácil sobre chaves primárias e uma inserção
-
03-07-2019 - |
Pergunta
No MySQL, como faço para obter a chave primária utilizada para uma operação de inserção, quando é autoincrementável.
Basicamente, eu quero o novo valor autoincremented a ser devolvido quando da conclusão do comunicado.
Obrigado!
Solução
O seu comentário esclarecimento diz que você está interessado em se certificar que LAST_INSERT_ID () não dá o resultado errado se outro inserção concorrente acontece. Tenha certeza de que é seguro usar LAST_INSERT_ID () independentemente de outra atividade concorrente. LAST_INSERT_ID () retorna apenas o ID mais recente gerado durante a sessão atual.
Você pode experimentar por si mesmo:
- Abrir duas janelas do escudo, mysql executar cliente em cada e se conectar a banco de dados.
- Shell 1: INSERT em uma tabela com uma AUTO_INCREMENT chave.
- Shell 1: Selecionar LAST_INSERT_ID (), ver o resultado.
- Shell. 2: inserir na mesma mesa
- Shell 2: Selecione LAST_INSERT_ID (), veja resultado diferente do shell 1.
- Shell 1: Selecionar LAST_INSERT_ID () mais uma vez, ver uma repetição do anterior resultado.
Se você pensar sobre isso, esta é a única maneira que faz sentido. Todos os bancos de dados que suporte auto-incrementar mecanismos chave deve agir desta forma. Se o resultado depende de uma condição de corrida com outros clientes, possivelmente, inserindo concomitantemente, então não haveria nenhuma maneira confiável para obter o último valor ID inserido na sua sessão atual.
Outras dicas
MySQL do LAST_INSERT_ID ()
Os Docs MySQL descrever a função: LAST_INSERT_ID ()
[select max (primary_key_column_name) from table_name] Ahhh não nessecarily. Eu não sou um cara de MySQL, mas há uma maneira específica para obter o último id inserido pela última ação completa que são um pouco mais robusto do que isso. E se uma inserção que aconteceu entre você escrever para a mesa e consultando-lo? Eu sei sobre porque me picou há muitas luas (então sim ele faz acontecer). Se tudo mais falhar, leia o manual: http: // dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html