संभवतः, चूंकि आप DB_ID
. के लिए कोई मान प्रदान नहीं कर रहे हैं कॉलम, उस मान को तालिका पर परिभाषित ट्रिगर डालने से पहले पंक्ति-स्तर द्वारा पॉप्युलेट किया जा रहा है। वह ट्रिगर, संभवतः, एक अनुक्रम से मान का चयन कर रहा है।
चूंकि डेटा को उत्पादन डेटाबेस से (संभवतः हाल ही में) स्थानांतरित किया गया था, मेरा दांव यह होगा कि जब डेटा की प्रतिलिपि बनाई गई थी, तो अनुक्रम को भी संशोधित नहीं किया गया था। मुझे लगता है कि अनुक्रम उन मानों को उत्पन्न कर रहा है जो सबसे बड़े DB_ID
. से बहुत कम हैं जो वर्तमान में त्रुटि की ओर ले जाने वाली तालिका में है।
आप ट्रिगर को देखकर इस संदेह की पुष्टि कर सकते हैं कि किस क्रम का उपयोग किया जा रहा है और एक
SELECT <<sequence name>>.nextval
FROM dual
और इसकी तुलना
. से कर रहे हैंSELECT MAX(db_id)
FROM cmdb_db
यदि, जैसा कि मुझे संदेह है, अनुक्रम डेटाबेस में पहले से मौजूद मान उत्पन्न कर रहा है, तो आप अनुक्रम को तब तक बढ़ा सकते हैं जब तक कि यह अप्रयुक्त मान उत्पन्न नहीं कर रहा हो या आप इसे INCREMENT
सेट करने के लिए बदल सकते हैं। किसी बहुत बड़ी चीज़ के लिए, अगला मूल्य एक बार प्राप्त करें, और INCREMENT
सेट करें वापस 1.