Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Incrementador dos campos

Ola pessoal,

Estou fazendo um teste. adicionei 147 registros e deletei todos maiores que o ID 102.

Ou seja, foram deletes registros cujos ID eram 103 até o 147.

Quando fiz um novo INSERT, verifiquei logo em seguida com um SELECT que o ID está em 148 e não em 103.

Ou seja, ele deixa uma 'marca' do último ID registrado e mesmo que o mesmo não exista, o contador continua à partir dele.

Isso se deve ao fato do contador considerar o último registro da tabela que foi criado e não o que ainda está criado? Ou seja, mesmo que tenha sido deletado, o contador permanece com o último registro?

Após as inserções:


SELECT ID FROM COMPRAS.

RESULTADO(ÚLTIMO ID DA TABELA): 147. -> Ou seja, aqui eu tenho 147 registros, pois cada registro é um ID.


DELETE FROM COMPRAS WHERE ID > 102
SELECT ID FROM COMPRAS.

RESULTADO(ÚLTIMO ID DA TABELA): 102.

INSERT INTO COMPRAS (ID, VALOR, DATA, OBSERVACOES, FORMA_PAGTO, COMPRADOR_ID) VALUES (ID_SEQ.NEXTVAL, 189.76, '01-07-2010', 'UMA OUTRA COMPRA QUALQUER', 'CARTAO', '1');
SELECT ID FROM COMPRAS.

RESULTADO(ÚLTIMO ID DA TABELA): 148. (PENÚLTIMO ID DA TABELA: 102)

Seria isso mesmo?

Obrigado

1 resposta
solução!

Oi Johhnn,

É isso mesmo.

O Oracle, e alguns outros bancos de dados, utilizam o conceito de Sequences para controlar as chaves primárias das tabelas.

Sempre que você insere um novo registro em alguma tabela, o Oracle consulta o último id que foi inserido na sequence dela, e o incrementa em 1.

Portanto por mais que você apage alguns ou todos os registros da tabela, a sequence dela não será "reiniciada", e sendo assim o próximo registro inserido vai ter o id com o próximo valor da sequence.

Esse é jeito mais comum de se trabalhar, entretanto é possível reiniciar a sequence de uma tabela, para que ela volte a contar a partir do último registro que de fato ficaram na tabela após a exclusão dos registros.

Nesse artigo tem uma explicação sobre o funcionamento de sequences: https://www.devmedia.com.br/sequence-no-oracle-criando-auto-incremento/402

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software