Không. Vì không có trật tự tự nhiên của các hàng trong bảng cơ sở dữ liệu, tất cả những gì bạn phải làm việc là các giá trị trong bảng của mình.
Vâng, có các cột hệ thống cụ thể của Postgres cmin
và ctid
bạn có thể lạm dụng ở một mức độ nào đó.
ID tuple (ctid
) chứa số khối tệp và vị trí trong khối cho hàng. Vì vậy, điều này đại diện cho thứ tự vật lý hiện tại trên đĩa. Các bổ sung sau này sẽ có ctid
lớn hơn , bình thường . Câu lệnh SELECT của bạn có thể trông giống như thế này
SELECT *, ctid -- save ctid from last row in last_ctid
FROM tbl
WHERE ctid > last_ctid
ORDER BY ctid
ctid
có kiểu dữ liệu tid
. Ví dụ:'(0,9)'::tid
Tuy nhiên, nó không ổn định làm định danh dài hạn, kể từ VACUUM
hoặc bất kỳ UPDATE
đồng thời nào hoặc một số thao tác khác có thể thay đổi vị trí thực của bộ tuple bất kỳ lúc nào. Tuy nhiên, trong suốt thời gian của một giao dịch, nó sẽ ổn định. Và nếu bạn chỉ đang chèn và không có gì nếu không, nó sẽ hoạt động cục bộ cho mục đích của bạn.
Tôi sẽ thêm một cột dấu thời gian với now()
mặc định ngoài serial
cột ...
Tôi cũng sẽ để cột mặc định điền id
của bạn cột (một serial
hoặc IDENTITY
cột). Thao tác đó truy xuất số từ chuỗi ở giai đoạn sau hơn là tìm nạp rõ ràng rồi chèn nó, do đó giảm thiểu (nhưng không loại bỏ) cửa sổ cho điều kiện chủng tộc - khả năng id
thấp hơn sẽ được chèn vào một thời gian sau. Hướng dẫn chi tiết:
- Cột bảng tăng dần tự động