Nie. Ponieważ nie ma nie ma naturalnego porządku wierszy w tabeli bazy danych, wszystko, z czym musisz pracować, to wartości w Twojej tabeli.
Cóż, istnieją kolumny systemowe specyficzne dla Postgresa cmin i ctid mogłeś nadużycia do pewnego stopnia.
Identyfikator krotki (ctid ) zawiera numer bloku pliku i pozycję w bloku dla wiersza. Reprezentuje to więc bieżące fizyczne uporządkowanie na dysku. Późniejsze dodatki będą miały większy ctid , normalnie . Twoja instrukcja SELECT może wyglądać tak
SELECT *, ctid -- save ctid from last row in last_ctid
FROM tbl
WHERE ctid > last_ctid
ORDER BY ctid
ctid ma typ danych tid . Przykład:'(0,9)'::tid
Jednak nie jest stabilny jako identyfikator długoterminowy, ponieważ VACUUM lub dowolna jednoczesna UPDATE lub niektóre inne operacje mogą w dowolnym momencie zmienić fizyczną lokalizację krotki. Na czas trwania transakcji jest jednak stabilna. A jeśli tylko wstawiasz i nic w przeciwnym razie powinno działać lokalnie w Twoim celu.
Dodałbym kolumnę sygnatury czasowej z domyślną now() oprócz serial kolumna ...
Pozwoliłbym również, aby kolumna była domyślna wypełnij swój id kolumna (serial lub IDENTITY kolumna). To pobiera numer z sekwencji na późniejszym etapie niż jawne pobranie, a następnie wstawienie go, minimalizując w ten sposób (ale nie eliminując) okno dla sytuacji wyścigu - prawdopodobieństwo, że niższy id zostanie wstawiony w późniejszym czasie. Szczegółowe instrukcje:
- Automatyczna inkrementacja kolumny tabeli