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

Làm cách nào để chuyển tiếp chuỗi khóa chính trong Django một cách an toàn?

Vì tôi chưa tìm ra cách "tự động" để thực hiện việc này, nên tôi đang nghĩ đến cách giải quyết sau - cách giải quyết này sẽ khả thi đối với tình huống cụ thể của tôi:

  1. Đặt trình tự với MAXVALUE 49999 NO CYCLE
  2. Khi đạt đến 49999, lần lưu tiếp theo () sẽ gặp lỗi postgres
  3. Nắm bắt ngoại lệ đó và sắp xếp lại dưới dạng lỗi biểu mẫu "bạn đã hết số lượng, vui lòng đặt lại về khối tiếp theo rồi thử lại"
  4. Cung cấp chế độ xem nơi người dùng có thể kích hoạt khối tiếp theo, tức là thực thi "ALTER SEQUENCE my_seq RESTART VỚI 70000 MAXVALUE 89999"

Tôi không thoải mái về việc tự động khởi động lại khi bắt gặp ngoại lệ:

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

vì tôi lo sợ rằng việc hết id của hai save () đồng thời sẽ dẫn đến hai lần khởi động lại riêng biệt và sau đó là vi phạm ràng buộc duy nhất. (khái niệm về cơ bản giống như vấn đề ban đầu)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để làm cho Khóa chính có chữ số X trong PostgreSQL?

  2. CHÈN SQL mà không chỉ định cột. Điều gì xảy ra?

  3. Truy vấn phù hợp với thẻ chuỗi

  4. Làm cách nào để bạn tạo một người dùng chỉ đọc trong PostgreSQL?

  5. Làm cách nào để thay đổi định dạng ngày trong Postgres?