Não. Como não há ordem natural de linhas em uma tabela de banco de dados, tudo o que você precisa trabalhar são os valores em sua tabela.
Bem, existem as colunas de sistema específicas do Postgres
cmin e ctid você poderia abuso em algum grau. O ID da tupla (
ctid ) contém o número do bloco do arquivo e a posição no bloco para a linha. Portanto, isso representa a ordenação física atual no disco. Adições posteriores terão um ctid maior , normalmente . Sua instrução SELECT pode ficar assim SELECT *, ctid -- save ctid from last row in last_ctid
FROM tbl
WHERE ctid > last_ctid
ORDER BY ctid
ctid tem o tipo de dados tid . Exemplo:'(0,9)'::tid No entanto, não é estável como identificador de longo prazo, pois
VACUUM ou qualquer UPDATE simultâneo ou algumas outras operações podem alterar a localização física de uma tupla a qualquer momento. Para a duração de uma transação é estável, no entanto. E se você está apenas inserindo e nada caso contrário, ele deve funcionar localmente para sua finalidade. Eu adicionaria uma coluna de carimbo de data/hora com o padrão
now() além do serial coluna... Eu também deixaria uma coluna padrão preencha seu
id coluna (uma serial ou IDENTITY coluna). Isso recupera o número da sequência em um estágio posterior ao de buscar explicitamente e inseri-lo, minimizando (mas não eliminando) a janela para uma condição de corrida - a chance de um id menor seria inserido posteriormente. Instruções detalhadas:- Coluna da tabela de incremento automático