2010-02-01 15 views
7

हमें बैच नौकरी में ओआरए -00001 (अद्वितीय बाधा उल्लंघन) मिल रही है। हालांकि, त्रुटि तब होती है जब एक COMMIT जारी किया जाता है, उस समय जब आपत्तिजनक रिकॉर्ड डाला जाता है।COMMITING करते समय ORA-00001 (अद्वितीय बाधा उल्लंघन) प्राप्त करना?

सवाल:

  • कैसे आ कि अद्वितीय बाधा COMMIT पर चेक किया जाता है? (क्या ऐसी कुछ सेटिंग्स हैं जिनका हम उपयोग कर सकते हैं ताकि जांच INSERT के समय होती है?)
  • हम आक्रामक एसक्यूएल/रिकॉर्ड को कैसे देख सकते हैं जो अद्वितीय बाधा उल्लंघन का कारण बनता है?

किसी भी मदद की सराहना की जाती है!


अतिरिक्त सूचना/प्रश्न:

"अपमानजनक" बाधा तत्काल और गैर DEFERRABLE के रूप में चिह्नित किया गया है। क्या लेनदेन में इसे ओवरराइड किया जा सकता है?

उत्तर

5

प्रतिबन्ध चिह्नित किया जा सकता/deferrable रूप में परिभाषित किया। उस स्थिति में बाधा जांच या तो "तत्काल" या "स्थगित" हो सकती है। बाधा को परिभाषित करते समय आप एक डिफ़ॉल्ट/प्रारंभिक मान, initially immediate या initially deferred सेट कर सकते हैं। जब deferred पर सेट किया जाता है तब तक बाध्यता लागू नहीं होती है जब तक आप लेनदेन नहीं करते।
आप स्थगित बाधाओं के व्यवहार को बदल सकते हैं उदा।

के माध्यम से
set constraints all immediate; 

यह भी देखें: http://www.oracle.com/technology/oramag/oracle/03-nov/o63asktom.html

3

प्रतिबंधों को स्थगित के रूप में परिभाषित किया जा सकता है, जिसका अर्थ है कि वे डेटा परिवर्तन के समय नहीं, प्रतिबद्धता पर चेक किए जाते हैं। निम्नलिखित 2 लिंक देखें:

http://www.oracle-base.com/articles/8i/ConstraintCheckingUpdates.php

http://www.oracle.com/technology/oramag/oracle/03-nov/o63asktom.html

आशा है कि यह मदद करता है

संबंधित मुद्दे