[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.
J
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?
J
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
M
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
V
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