ओरेकल एक बाधा पाते हैं


166

मुझे एक बाधा कहा जाता है users.SYS_C00381400। मुझे कैसे पता चलेगा कि बाधा क्या है? क्या सभी बाधाओं को दूर करने का एक तरीका है?


कैसे पता करें बाधा? users.SYS_C00381400
विनय

बाधा नाम एक त्रुटि संदेश में दिखाया गया है।
डेविड वनिल

जवाबों:


268
select * from all_constraints
where owner = '<NAME>'
and constraint_name = 'SYS_C00381400'
/

सभी डेटा डिक्शनरी दृश्यों की तरह, यह USER_CONSTRAINTS दृश्य है यदि आप केवल अपने वर्तमान स्कीमा और प्रशासन उपयोगकर्ताओं के लिए DBA_CONSTRAINTS दृश्य देखना चाहते हैं।

बाधा नाम का निर्माण एक सिस्टम जनित बाधा नाम दर्शाता है। उदाहरण के लिए, यदि हम एक तालिका घोषणा में NULL निर्दिष्ट नहीं करते हैं। या वास्तव में एक प्राथमिक या अद्वितीय कुंजी। उदाहरण के लिए:

SQL> create table t23 (id number not null primary key)
  2  /

Table created.

SQL> select constraint_name, constraint_type
  2  from user_constraints
  3  where table_name = 'T23'
  4  /

CONSTRAINT_NAME                C
------------------------------ -
SYS_C00935190                  C
SYS_C00935191                  P

SQL>

'C'जांच के लिए, 'P'प्राथमिक के लिए।

आम तौर पर एक स्पष्ट नाम से संबंधपरक बाधाओं को देना एक अच्छा विचार है। उदाहरण के लिए, यदि डेटाबेस प्राथमिक कुंजी के लिए एक इंडेक्स बनाता है (जो यह करेगा कि यदि वह कॉलम पहले से ही इंडेक्स नहीं किया गया है) तो यह इंडेक्स नाम की बाधा नाम का उपयोग करेगा। आप जैसे नाम वाले अनुक्रमित से भरा डेटाबेस नहीं चाहते हैं SYS_C00935191

ईमानदार होना करने के लिए ज्यादातर लोगों को नाम नहीं बाधाओं को परेशान नहीं करते।


25

अधिक विस्तृत विवरण प्राप्त करने के लिए (आप किस तालिका / स्तंभ का संदर्भ लेते हैं)

SELECT   uc.constraint_name||CHR(10)
   ||      '('||ucc1.TABLE_NAME||'.'||ucc1.column_name||')' constraint_source
   ,       'REFERENCES'||CHR(10)
   ||      '('||ucc2.TABLE_NAME||'.'||ucc2.column_name||')' references_column
FROM user_constraints uc ,
  user_cons_columns ucc1 ,
  user_cons_columns ucc2
WHERE uc.constraint_name = ucc1.constraint_name
AND uc.r_constraint_name = ucc2.constraint_name
AND ucc1.POSITION        = ucc2.POSITION -- Correction for multiple column primary keys.
AND uc.constraint_type   = 'R'
AND uc.constraint_name   = 'SYS_C00381400'
ORDER BY ucc1.TABLE_NAME ,
  uc.constraint_name;

से यहाँ


6

शायद यह मदद कर सकता है ..

SELECT constraint_name, constraint_type, column_name
from user_constraints natural join user_cons_columns
where table_name = "my_table_name";
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.