Nee. Omdat er geen natuurlijke volgorde is van rijen in een databasetabel, het enige waarmee u hoeft te werken zijn de waarden in uw tabel.
Welnu, er zijn de Postgres-specifieke systeemkolommen cmin en ctid je zou tot op zekere hoogte misbruiken.
De tuple-ID (ctid ) bevat het bestandsbloknummer en de positie in het blok voor de rij. Dit vertegenwoordigt dus de huidige fysieke ordening op schijf. Latere toevoegingen hebben een grotere ctid , normaal . Uw SELECT-instructie zou er zo uit kunnen zien
SELECT *, ctid -- save ctid from last row in last_ctid
FROM tbl
WHERE ctid > last_ctid
ORDER BY ctid
ctid heeft het gegevenstype tid . Voorbeeld:'(0,9)'::tid
Het is echter niet stabiel als identificatie op lange termijn, sinds VACUUM of een gelijktijdige UPDATE of andere bewerkingen kunnen de fysieke locatie van een tuple op elk moment wijzigen. Voor de duur van een transactie is het echter stabiel. En als je gewoon invoegt en niets anders zou het lokaal moeten werken voor uw doel.
Ik zou een tijdstempelkolom toevoegen met de standaard now() naast de serial kolom ...
Ik zou ook een kolom standaard . laten vul je id in kolom (een serial of IDENTITY kolom). Dat haalt het nummer uit de reeks in een later stadium dan het expliciet ophalen en vervolgens invoegen, waardoor het venster voor een raceconditie wordt geminimaliseerd (maar niet geëlimineerd) - de kans dat een lagere id zou op een later tijdstip worden ingevoegd. Gedetailleerde instructies:
- Tabelkolom automatisch verhogen