PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

मैं Django में सुरक्षित रूप से प्राथमिक कुंजी अनुक्रम कैसे अग्रेषित कर सकता हूं?

जैसा कि मुझे अभी तक ऐसा करने का "स्वचालित" तरीका नहीं मिला है, मैं निम्नलिखित समाधान के बारे में सोच रहा हूं - यह मेरी विशेष स्थिति के लिए संभव होगा:

  1. अनुक्रम को MAXVALUE 49999 NO CYCLE के साथ सेट करें
  2. जब 49999 तक पहुंच जाता है, तो अगला सेव () पोस्टग्रेज त्रुटि में चलेगा
  3. उस अपवाद को पकड़ें और एक फ़ॉर्म त्रुटि के रूप में फिर से लिखें "आपकी संख्या समाप्त हो गई है, कृपया अगले ब्लॉक पर रीसेट करें और फिर से प्रयास करें"
  4. एक ऐसा दृश्य प्रदान करें जहां उपयोगकर्ता अगले ब्लॉक को सक्रिय कर सके, अर्थात "ALTER SEQUENCE my_seq RESTART with 70000 MAXVALUE 89999" निष्पादित करें

अपवाद को पकड़ते समय मैं स्वचालित रूप से पुनरारंभ करने के बारे में असहज हूं:

try:
    instance.save()
except RunOutOfIdsException:
    restart_id_sequence()
    instance.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. डॉकर पर अपने पोस्टग्रेएसक्यूएल बैकअप को मान्य करना

  2. django नाक परीक्षण में hstore एक्सटेंशन स्थापित करना

  3. पिवोटिंग फ़ंक्शन को लागू किए बिना विभिन्न क्षेत्रों के लिए कॉलम कैसे बनाएं

  4. क्या PostgreSQL में सम्मिलित विफल होने पर नेक्स्टवल () को कॉल करने से बचने का कोई तरीका है?

  5. मैं php में sql क्वेरी निष्पादन को कैसे रोक सकता हूं?