[Resolvido] Pegar o valor do próximo ID autoincremento no MySQL, JavaFX
7 respostas
T
Thiago_Belizario
Estou precisando pegar o valor do próximo ID a ser inserido no BD, tenho 2 tabelas por exemplo Visitas e Sonho, onde a foreign key da tabela Sonho é o ID da tabela Visitas, esses dados são inseridos simultaneamente no sistema, então para isso tenho que pegar qual sera o valor do ID da tabela Visitas e inserir na tabela sonho, estava tentando fazer da seguinte maneira:
mas esse código não esta retornando o próximo ID, na primeiro momento retornou, mas depois que apaguei um registro e inseri novos registros, ele passou a sempre me retornar o mesmo valor, já pesquisei várias coisas e ainda não consegui resolver, se alguém puder ajudar, agradeço desde já
SELECT COALESCE(MAX(ID), 0) + 1 AS PROXIMO_REGISTRO FROM TBLVISITAS;
T
Thiago_Belizario
Minha dúvida é se várias pessoas usando ao mesmo tempo, pode ocorrer de pegar o ID da tabela Visitas de forma errada? fiz o teste com o código que me passou pegou o próximo ID corretamente, mas se apago o ultimo registro, por exemplo o id 6, e execute o código ele me retorna o 6 novamente e não o 7 que seria o próximo do autoincremento.
Jonathan_Medeiros1 like
Entendi, realmente não resolveria nesse caso!
Estranho que a consulta que você fez deveria funcionar normalmente, será que você não perdeu alguma configuração?
javaflex1 like
Já que o Mysql é mais limitado por nao ter sequence, pra ter total controle tente emular como explica aqui: https://stackoverflow.com/a/2292030
Mike1 like
Nem sempre apagar um registro é bom, as vezes apenas esconder é melhor.
Considere criar uma coluna no banco chamada ativo por exemplo, ai caso queira “apagar” você apenas muda o ativo para false, assim mantendo o último id e o registro no banco
Eu pessoalmente não gosto de apagar, pois os registros ficam como histórico e nunca se sabe o que virá pela frente
Villagram1 like
Bom dia amigo.
Você pode tentar usar funções do banco de dados, acredito que disparando as instruções na sequencia pode dar certo.
Mas eu aconselho a usar um banco diferente como o Derby da Apache ou o OracleXE.
T
Thiago_Belizario1 like
boa tarde amigos, agradeço a todos pela ajuda, consegui utilizar o código que estava tentando antes, após dar o comando abaixo, como Jonathan_Medeiros disse, estava faltando alguma configuração e era a de privilégios, não sei se essa é a maneira mais correta, mas funcionou como eu estava esperando