PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL - próximo valor serial em uma tabela


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.