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

Bagaimana saya bisa meneruskan urutan kunci utama di Django dengan aman?

Karena saya belum menemukan cara "otomatis" untuk melakukan ini, saya memikirkan solusi berikut - ini akan layak untuk situasi khusus saya:

  1. Setel urutan dengan MAXVALUE 49999 NO CYCLE
  2. Ketika 49999 tercapai, save() berikutnya akan mengalami kesalahan postgres
  3. Tangkap pengecualian itu dan buat kembali sebagai kesalahan formulir "Anda kehabisan angka, harap setel ulang ke blok berikutnya lalu coba lagi"
  4. Memberikan tampilan di mana pengguna dapat mengaktifkan blok berikutnya, yaitu menjalankan "ALTER SEQUENCE my_seq RESTART WITH 70000 MAXVALUE 89999"

Saya tidak nyaman melakukan restart secara otomatis ketika menangkap pengecualian:

try:
    instance.save()
except RunOutOfIdsException:
    restart_id_sequence()
    instance.save()

karena saya khawatir dua save() bersamaan kehabisan id akan menyebabkan dua restart terpisah, dan pelanggaran berikutnya dari batasan unik. (konsep dasarnya sama dengan masalah awal)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memuat data RDF ke Tabel PostgreSQL melalui RDFLib-SQLAlchemy

  2. heroku:relasi auth_group tidak ada

  3. Filter kueri Django menggunakan array besar id di Postgres DB

  4. Apa perbedaan antara `->>` dan `->` di Postgres SQL?

  5. PostgreSQL:mengekspor data yang dihasilkan dari kueri SQL ke Excel/CSV