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

बाधा उल्लंघन अपवाद ORA-00001

एक अद्वितीय बाधा लागू करता है, ठीक है, विशिष्टता। यह प्राथमिक कुंजी बाधा<के विपरीत, नल की अनुमति देगा। /ए> ।

आपकी त्रुटि का मतलब है कि आप डुप्लिकेट डेटा डाल रहे हैं जब डेटाबेस को स्पष्ट रूप से प्रतिबंधित करने के लिए कॉन्फ़िगर किया गया है।

आप निम्न क्वेरी को सभी_बाधाएं . लिंक कॉलम को डीकोड करता है CONSTRAINT_TYPE , उदाहरण के लिए P प्राथमिक कुंजी है और U एक अद्वितीय कुंजी।

select *
  from all_constraints uc
 where uc.table_name = 'MY_TABLE'
   and owner = 'DBSCHEMA'

यह पता लगाने के लिए कि कौन से कॉलम बाधा में हैं <का उपयोग करें कोड>all_cons_columns इसके बजाय, या दोनों को एक क्वेरी में संयोजित करना:

select uc.*, ucc.column_name, ucc.position
  from all_constraints uc
  join all_cons_columns ucc
    on uc.owner = ucc.owner
   and uc.table_name = ucc.table_name
   and uc.constraint_name = ucc.constraint_name
 where uc.table_name = 'MY_TABLE'
   and uc.owner = 'DBSCHEMA'

किसी भी क्वेरी के लिए आप अतिरिक्त शर्त जोड़ सकते हैं और Constraint_name ='IDX_CO_DETAILS' आपकी समस्या का कारण बनने वाली विशिष्ट बाधा के विवरण का पता लगाने के लिए।

आपकी टिप्पणी कुछ कारणों से थोड़ी आश्चर्यजनक है। यहां तक ​​​​कि एक सिस्टम ने बाधा पैदा की, उदाहरण के लिए एक जिसे इन-लाइन परिभाषित किया गया था जब तालिका को बिना किसी नाम के बनाया गया था, उसे दिखाना चाहिए। साथ ही, बाधा नाम IDX... तात्पर्य है कि यह एक अनुक्रमणिका है।

यदि आप निम्न क्वेरी चलाते हैं तो यह आपको बताएगा कि क्या ऑब्जेक्ट डेटाबेस में मौजूद है:

select *
  from all_objects
 where object_name = 'IDX_CO_DETAILS'

मुझे उम्मीद है कि OBJECT_TYPE इस क्वेरी द्वारा लौटाया गया 'INDEX' . है ।

इसके बाद निम्न क्वेरी प्रत्येक अनुक्रमणिका को उस नाम, अनुक्रमणिका के प्रकार, जिस तालिका से संबद्ध है और उस तालिका के स्वामी के साथ लौटाएगी।

select *
  from all_indexes
 where index_name = 'IDX_CO_DETAILS'

आपकी त्रुटि को देखते हुए मैं आगे यह उम्मीद करूंगा कि कॉलम UNIQUNESS इस क्वेरी द्वारा लौटाया गया 'UNIQUE' . है ।

इससे आपको ऑब्जेक्ट को ट्रैक करने में मदद मिलेगी।

आप सिस्टम पैकेज dbms_metadata का भी इस्तेमाल कर सकते हैं वस्तु के डीडीएल को ट्रैक करने के लिए; सावधान रहें यह एक क्लॉब लौटाता है।

select dbms_metadata.get_ddl('INDEX','IDX_CO_DETAILS', schema => 'DBSCHEMA') 
  from dual

पैरामीटर स्कीमा वैकल्पिक है।




  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. एसक्यूएल का उपयोग कर ऑरैकल ब्लॉब कॉलम में संग्रहीत फ़ाइल के पठनीय 'फ़ाइल आकार' को वापस करने का एक शानदार तरीका क्या है?

  3. LINQpad से एक उचित विजुअल स्टूडियो प्रोजेक्ट में जा रहे हैं?

  4. Oracle में PLS-00323 त्रुटि का समाधान करें

  5. Oracle PLSQL में किसी संख्या के दशमलव स्थानों को न्यूनतम तक कैसे विस्तारित करें?