PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pembuatan urutan berurutan

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengembangkan PostgreSQL untuk Windows, Bagian 1

  2. Bagaimana saya bisa menambahkan kolom yang tidak mengizinkan nol dalam database Postgresql?

  3. Penyelaman Cloud Vendor:PostgreSQL di Google Cloud Platform (GCP)

  4. Mengalihkan proyek Django dari backend sqlite3 ke postgresql gagal saat memuat datadump

  5. Bagaimana cara membandingkan baris saat ini dengan baris berikutnya dan sebelumnya di PostgreSQL?