Se você quiser reivindicar um documento de identidade e devolvê-lo, use
nextval()
, que avança a sequência sem inserir nenhum dado. Observe que se este for um
SERIAL
coluna, você precisa encontrar o nome da sequência com base no nome da tabela e da coluna, da seguinte forma:Select nextval(pg_get_serial_sequence('my_table', 'id')) as new_id;
Não há garantia absoluta de que você verá esses IDs voltarem em ordem (a sequência os gera em ordem, mas várias sessões podem reivindicar um ID e não usá-lo ainda, ou reverter um
INSERT
e o ID não será reutilizado), mas há a garantia de que eles serão únicos, o que normalmente é o importante. Se você fizer isso com frequência sem realmente usar o ID, eventualmente usará todos os valores possíveis de um
integer
de 32 bits coluna (ou seja, atingir o número inteiro representável máximo), mas se você usá-lo apenas quando houver uma grande chance de inserir uma linha com esse ID, deve estar tudo bem.