Fórum Campo Autoincremento fora de sequência #613904

27/01/2021

0

Deixa eu perguntar: Eu verifiquei que em todos os meus sistemas, o campo ID não obedece uma sequência lógica (1,2,3,4...). Na minha base o campo ID está definido como "IDENTITY(1,1) NOT NULL," e PK. Na primeira inserção, começa certinho no número 1 e vai obedecendo a sequência normalmente. De repente, num dia qualquer, eu faço uma nova inserção e qdo vou verificar já não está mais sequência. Por exemplo: num dia anterior a ultima inserção era 336 e no outro dia quando faço uma nova inserção o numero já pulou para 1321. Porque acontece isso? Como posso resolver isso?
Leodevir Mauricio

Leodevir Mauricio

Responder

Post mais votado

27/01/2021

esse tipo de campo não deve ser 'controlado'.
normalmente ele sequer é apresentado e serve somente para identificar um registro na tabela. assim evita chaves estrangeiras compostas, melhorando a performance ao relacionar registros entre tabelas.

de qualquer modo, acredito que dependa da forma como você implementou a inclusão.
se ao incluir um registro (antes de qualquer confirmação do usuário) o procedimento já esteja sendo efetuado diretamente no banco de dados, o ID será incrementado, porque o SGBDR precisa prevenir uma gravação simultânea, então já incrementa o registro para que não haja duplicidade.
o problema é que dessa forma, se o usuário cancelar a inclusão, o ID será 'perdido' e, ao efetuar uma nova inclusão, será obtido o número seguinte àquele perdido.

o ideal é que a inclusão no software seja apenas 'lógica'. assim, somente ao confirmar a gravação (post, commit) o banco fará o incremento do ID. o problema disto é que você só conhecerá o ID após efetivar a gravação.

não sei se me fiz entender...



Emerson Nascimento

Emerson Nascimento
Responder

Gostei + 2

Mais Posts

11/02/2021

Leodevir Mauricio

esse tipo de campo não deve ser ''controlado''.
normalmente ele sequer é apresentado e serve somente para identificar um registro na tabela. assim evita chaves estrangeiras compostas, melhorando a performance ao relacionar registros entre tabelas.

de qualquer modo, acredito que dependa da forma como você implementou a inclusão.
se ao incluir um registro (antes de qualquer confirmação do usuário) o procedimento já esteja sendo efetuado diretamente no banco de dados, o ID será incrementado, porque o SGBDR precisa prevenir uma gravação simultânea, então já incrementa o registro para que não haja duplicidade.
o problema é que dessa forma, se o usuário cancelar a inclusão, o ID será ''perdido'' e, ao efetuar uma nova inclusão, será obtido o número seguinte àquele perdido.

o ideal é que a inclusão no software seja apenas ''lógica''. assim, somente ao confirmar a gravação (post, commit) o banco fará o incremento do ID. o problema disto é que você só conhecerá o ID após efetivar a gravação.

não sei se me fiz entender...




Obrigado queridão, entendi sim! Vou mudar o modo de tratamento no meu banco antes de fazer a inserção.
Valeu!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar