Nej. Da der ingen naturlig orden er af rækker i en databasetabel, er det eneste du skal arbejde med værdierne i din tabel.
Nå, der er de Postgres-specifikke systemkolonner cmin og ctid du kunne misbrug til en vis grad.
Tupel-id'et (ctid ) indeholder filbloknummeret og positionen i blokken for rækken. Så dette repræsenterer den aktuelle fysiske bestilling på disken. Senere tilføjelser vil have en større ctid , normalt . Din SELECT-sætning kunne se sådan ud
SELECT *, ctid -- save ctid from last row in last_ctid
FROM tbl
WHERE ctid > last_ctid
ORDER BY ctid
ctid har datatypen tid . Eksempel:'(0,9)'::tid
Den er dog ikke stabil som langsigtet identifikator, da VACUUM eller enhver samtidig UPDATE eller nogle andre operationer kan ændre den fysiske placering af en tupel til enhver tid. For varigheden af en transaktion er den dog stabil. Og hvis du bare indsætter og ingenting ellers burde det fungere lokalt til dit formål.
Jeg ville tilføje en tidsstempelkolonne med standard now() ud over serial kolonne ...
Jeg ville også lade en kolonne standard udfyld dit id kolonne (en serial eller IDENTITY kolonne). Det henter nummeret fra sekvensen på et senere tidspunkt end ved eksplicit at hente og derefter indsætte det, og derved minimere (men ikke eliminere) vinduet for en løbstilstand - chancen for at et lavere id ville blive indsat på et senere tidspunkt. Detaljerede instruktioner:
- Automatisk stigning i tabelkolonnen