Dica rápida: você precisa encontrar, num tabela com o tipo serial, quais os que estão faltando na sequência (o que poderia indicar alguma transação que sofreu rollback ou alguma tupla que foi deletada). No PostgreSQL, cabe tudo numa query só:
SELECT * FROM generate_series(1,(SELECT max(id_campo_serial) FROM tabela)) AS i WHERE i NOT IN
(SELECT id_campo_serial FROM tabela)
Outra forma possível, agora chamando a sequência pelo nome:
SELECT id
FROM generate_series(1, (SELECT last_value FROM id_seq)) AS s(id)
EXCEPT
SELECT id_campo_serial FROM tabela
É isso!
Subscribe: 



