PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как мога безопасно да препратя поредица от първичен ключ в Django?

Тъй като все още не съм намерил "автоматизиран" начин да направя това, обмислям следното решение - би било осъществимо за моята конкретна ситуация:

  1. Задайте последователността с MAXVALUE 49999 NO CYCLE
  2. Когато се достигне 49999, следващият save() ще изведе postgres грешка
  3. Уловете това изключение и повдигнете отново като грешка във формуляра „свършихте номерата, моля, нулирайте към следващия блок, след което опитайте отново“
  4. Предоставете изглед, където потребителят може да активира следващия блок, т.е. изпълни „ALTER SEQUENCE my_seq RESTART WITH 70000 MAXVALUE 89999“

Не ми е удобно да правя автоматично рестартиране при улавяне на изключението:

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

тъй като се страхувам, че две едновременни save() изчерпват идентификаторите, ще доведат до две отделни рестартирания и последващо нарушение на уникалното ограничение. (по принцип същата концепция като оригиналния проблем)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC Подготвен параметър на изявление в json

  2. Има ли PostgreSQL еквивалент на SQL Server профайлър?

  3. Постоянно задайте пътя на схемата на Postgresql

  4. модели на миграция на производствени данни при непрекъсната доставка

  5. Защо бих получил грешка с дублиран ключ при актуализиране на ред?