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

सिद्धांत में दो उत्पन्न मूल्य

मैं जो जानता हूं उससे GenerateValue रणनीति प्राथमिक कुंजी के लिए आरक्षित है, जिसका अर्थ है कि आप इसे प्रति इकाई केवल एक बार उपयोग कर सकते हैं।

हालांकि आपकी आवश्यकताओं के आधार पर आपके पास कुछ विकल्प हैं:

  • आपके पास हमेशा एक हो सकता है प्रीपर्सिस्ट लाइफसाइकिल इवेंट , पहली बार जारी रखने से पहले नाम के लिए अपनी पसंद का कोई भी मान सेट करना।

  • यदि आप आईडी से एक और विशिष्ट आईडी उत्पन्न करने के लिए निर्भर हैं, तो आप एक पोस्टपर्सिस्ट ईवेंट लागू कर सकते हैं, वहां अपना नाम सेट कर सकते हैं और सुनिश्चित कर सकते हैं कि आप दो बार फ्लश करते हैं (पहली बार प्राथमिक कुंजी उत्पन्न करने के लिए, दूसरी बार नाम सहेजने के लिए)।

  • यदि आपके लिए यह ठीक है कि नाम कुछ समय के लिए डेटाबेस में खाली है, तो पोस्टलोड ईवेंट को लागू करना ठीक हो सकता है, जो खाली होने पर नाम भरता है। इस तरह आपका एप्लिकेशन हमेशा नाम देखता है (क्योंकि यह या तो डेटाबेस से लोड होता है या पोस्टलोड ईवेंट द्वारा भरा जाता है) और जब आप प्रारंभिक सहेजने के बाद पहली बार जानकारी जोड़ते या संपादित करते हैं, तो आपका नाम भी सहेजा जाएगा

  • नाम को सहेजना ठीक नहीं हो सकता है और इसे कुछ क्रोनजॉब/डेमन/कतार द्वारा उत्पन्न किया जा सकता है ताकि आपके आवेदन को इससे निपटना न पड़े। केवल एक चीज जो आपको करने की आवश्यकता होगी वह यह सुनिश्चित करना है कि एक लापता नाम कुछ खराब नहीं करता है।

  • हो सकता है कि एक कुंजी उत्पन्न करना ठीक हो जो प्राथमिक कुंजी पर निर्भर न हो और इस प्रकार एक वैश्विक ईवेंट हैंडलर . आपको निश्चित रूप से यह कमी है कि इस तरह के एक ईवेंट हैंडलर, क्योंकि वह वैश्विक है, आपके द्वारा जारी हर वस्तु के लिए कॉल किया जाता है, भले ही वह सही इकाई हो।

  • अंतिम, लेकिन कम से कम, डेटाबेस को इसे संभालने देने के लिए संग्रहीत प्रक्रियाओं/ट्रिगर पर वापस आना ठीक हो सकता है। इस तरह आपको अपने आवेदन के अंदर इसके साथ खिलवाड़ नहीं करना पड़ेगा। लेकिन सावधान रहें, रास्ते में नुकसान हो सकता है (जैसे एक डेवलपर इस बारे में भूल जाता है क्योंकि यह कोड में नहीं बल्कि डेटाबेस में है!)।

अन्य तरीके भी हो सकते हैं। मैं जो कहना चाह रहा था वह है:गैर-प्राथमिक कुंजी गुणों के लिए जेनरेट वैल्यू का उपयोग न करें!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL दीर्घवृत्त के साथ पाठ को छोटा करता है

  2. एक सम्मिलित क्वेरी PHP द्वारा MySQL में दो अलग-अलग तालिका में डेटा सम्मिलित करना संभव है?

  3. वर्डप्रेस वेबसाइटों के लिए डेटाबेस विफलता

  4. समान कॉलम वाले दो डुप्लीकेट इंडेक्स

  5. क्लास डेटटाइम का ऑब्जेक्ट स्ट्रिंग में परिवर्तित नहीं किया जा सका