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

डालने के दौरान अद्वितीय बाधा उल्लंघन:क्यों? (आकाशवाणी)

संभवतः, चूंकि आप DB_ID . के लिए कोई मान प्रदान नहीं कर रहे हैं कॉलम, उस मान को तालिका पर परिभाषित ट्रिगर डालने से पहले पंक्ति-स्तर द्वारा पॉप्युलेट किया जा रहा है। वह ट्रिगर, संभवतः, एक अनुक्रम से मान का चयन कर रहा है।

चूंकि डेटा को उत्पादन डेटाबेस से (संभवतः हाल ही में) स्थानांतरित किया गया था, मेरा दांव यह होगा कि जब डेटा की प्रतिलिपि बनाई गई थी, तो अनुक्रम को भी संशोधित नहीं किया गया था। मुझे लगता है कि अनुक्रम उन मानों को उत्पन्न कर रहा है जो सबसे बड़े DB_ID . से बहुत कम हैं जो वर्तमान में त्रुटि की ओर ले जाने वाली तालिका में है।

आप ट्रिगर को देखकर इस संदेह की पुष्टि कर सकते हैं कि किस क्रम का उपयोग किया जा रहा है और एक

SELECT <<sequence name>>.nextval
  FROM dual

और इसकी तुलना

. से कर रहे हैं
SELECT MAX(db_id)
  FROM cmdb_db

यदि, जैसा कि मुझे संदेह है, अनुक्रम डेटाबेस में पहले से मौजूद मान उत्पन्न कर रहा है, तो आप अनुक्रम को तब तक बढ़ा सकते हैं जब तक कि यह अप्रयुक्त मान उत्पन्न नहीं कर रहा हो या आप इसे INCREMENT सेट करने के लिए बदल सकते हैं। किसी बहुत बड़ी चीज़ के लिए, अगला मूल्य एक बार प्राप्त करें, और INCREMENT सेट करें वापस 1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MyBatis के साथ डायनामिक सेलेक्ट SQL स्टेटमेंट्स

  2. विशिष्ट स्तंभों के लिए DISTINCT का उपयोग करना

  3. Oracle:पैकेज के अंदर संग्रहीत कार्यविधि को कॉल करें

  4. मूल एन्क्रिप्शन (एएसओ) सक्षम होने पर ओरेकल में प्रत्येक खराब SQL अनुरोध पर चेकसम विफल क्यों होता है?

  5. जावा का उपयोग करके Oracle डेटाबेस में IN और OUT पैरामीटर के संग्रहीत फ़ंक्शन को कैसे कॉल करें?