PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tạo trình tự theo thứ tự

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 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - làm thế nào để hiển thị ngày ở múi giờ khác nhau?

  2. Hạn chế duy nhất của Postgres so với chỉ mục

  3. Thay đổi loại cột và đặt không rỗng

  4. SQL trong đó tập hợp đã nối phải chứa tất cả các giá trị nhưng có thể chứa nhiều giá trị hơn

  5. CẬP NHẬT với ORDER BY