För att utöka Marks korrekta svar, behåller PostgreSQL inte en radtidsstämpel, och den håller inte rader i någon speciell ordning. Om du inte definierar dina tabeller med en kolumn som innehåller tidsstämpeln de infogades vid, finns det inget sätt att välja dem i den ordning de infogades.
PostgreSQL kommer ofta att returnera dem i den ordning de sattes in i ändå, men det är bara för att de råkar vara i den ordningen på disken. Detta kommer att ändras när du update
s på bordet, eller deletes
sedan insert
senare s. Operationer som vacuum full
ändra det också. Du bör aldrig, aldrig förlita dig på beställningen utan en uttrycklig order by
klausul.
Om du vill att infogningens tidsstämpel ska skilja sig åt för rader inom en transaktion kan du använda clock_timestamp
istället för now()
. Använd även SQL-standarden current_timestamp
istället för att skriva now()
.