Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Arrumar ID dos produtos

No vídeo os IDs gerados pelo RETURN_GENERATED_KEYS não se adequam quando um produto é excluido tanto que no final o quarto produto (a mesa) possui um ID 19, como eu faria para o ID seguir a ordem certa? No caso se a mesa for o quarto produto, possuir o ID 4, mesmo tendo adicionado e excluido n produtos antes de a adicionar?

3 respostas

E aí, Pedro! Tudo certo, cara? =)

Infelizmente, acho que não tem como você fazer isso que está querendo... A ideia do ID é que ele seja único no banco de dados e, portanto, mesmo que ele seja excluído, novos registros não podem utilizá-lo, sacou?

O ID é sempre incremental e contínuo, ou seja, não tem como voltar a contagem, nem pular um número, a menos que você realize uma inserção e, depois uma remoção, sacou? =)

Espero ter ajudado, mas qualquer dúvida não deixe de postar por aqui para que possamos ajudá-lo, ok? =)

Abraço e bons estudos,

Fábio

solução!

Boa tarde Pedro,

Na verdade funciona assim, quando você criou uma coluna auto incremental para ser a chave primária, ela vai por padrão iniciar em 1. Então criou um registro, o id vai com 1. No segundo vai com 2, o terceiro com 3, etc.

Ai você exclui o registro que tinha id 1. O próximo criado vai usar qual id? O 4. Por quê? Porque o banco por padrão não vai reaproveitar um id que estava em uso, a configuração padrão de um campo auto incremental é iniciar em um valor, e sempre que precisar adicionar dar o próximo da sequência.

Então, conforme você vai criando e excluindo, e criando mais registro, a coluna auto incremental do id só vai aumentando. Por isso você terá essa situação completamente normal onde pode ter 4 produtos, e os ids serem 5, 8, 14, e 19 por exemplo.

Alguns bancos tem um suporte onde o desenvolvedor tem mais controle sobre colunas auto incrementais, como no Oracle com as Sequences por exemplo. Sugiro dar uma lida sobre.

PS.: caso você esteja preocupado que uma vez que uma coluna auto incremental padrão não funciona da forma que você gostaria, tenha em mente que há outros meios para você saber qual o primeiro produto, qual o terceiro, etc. Isso no mundo real em geral é feito com uma coluna de timestamp (data e hora), assim o mais antigo é o primeiro, e ordenando pela data você tem a ordem exata. Ordenando pelo id daria o mesmo resultado, afinal o valor mais baixo teria sido cadastrado primeiro (independente de começar do 1 e seguir uma ordem perfeita ou não).

Espero ter ajudado, abraço.

Muito obrigado pelas respostas, entendi agora