Tidak. Karena tidak ada keteraturan alam baris dalam tabel database, yang harus Anda kerjakan hanyalah nilai dalam tabel Anda.
Nah, ada kolom sistem khusus Postgres cmin
dan ctid
kamu bisa penyalahgunaan sampai tingkat tertentu.
ID Tuple (ctid
) berisi nomor blok file dan posisi di blok untuk baris. Jadi ini mewakili pemesanan fisik saat ini pada disk. Penambahan selanjutnya akan memiliki ctid
yang lebih besar , biasanya . Pernyataan SELECT Anda bisa terlihat seperti ini
SELECT *, ctid -- save ctid from last row in last_ctid
FROM tbl
WHERE ctid > last_ctid
ORDER BY ctid
ctid
memiliki tipe data tid
. Contoh:'(0,9)'::tid
Namun tidak stabil sebagai pengenal jangka panjang, karena VACUUM
atau UPDATE
concurrent bersamaan atau beberapa operasi lain dapat mengubah lokasi fisik tuple setiap saat. Untuk durasi transaksi itu stabil. Dan jika Anda hanya memasukkan dan tidak ada jika tidak, itu harus bekerja secara lokal untuk tujuan Anda.
Saya akan menambahkan kolom cap waktu dengan default now()
selain serial
kolom ...
Saya juga akan membiarkan kolom default isi id
your kolom (serial
atau IDENTITY
kolom). Itu mengambil nomor dari urutan pada tahap selanjutnya daripada mengambil secara eksplisit dan kemudian memasukkannya, sehingga meminimalkan (tetapi tidak menghilangkan) jendela untuk kondisi balapan - kemungkinan id
yang lebih rendah akan dimasukkan di lain waktu. Instruksi terperinci:
- Kolom tabel kenaikan otomatis