2012-08-09 16 views
77

में किसी तालिका के लिए सभी बाधाओं के प्रदर्शन नाम मैंने ओरेकल एसक्यूएल में बनाए गए कई तालिकाओं के लिए प्रत्येक बाधा के लिए एक नाम परिभाषित किया है।ओरेकल एसक्यूएल

समस्या यह है कि किसी विशेष तालिका के कॉलम के लिए बाधा डालने के लिए मुझे उस नाम को जानना आवश्यक है जिसे मैंने प्रत्येक बाधाओं के लिए प्रदान किया है, जिसे मैं भूल गया हूं।

मैं तालिका के प्रत्येक कॉलम के लिए निर्दिष्ट बाधाओं के सभी नामों को कैसे सूचीबद्ध करूं?

क्या ऐसा करने के लिए कोई SQL कथन है?

SELECT * 
    FROM user_cons_columns 
WHERE table_name = '<your table name>'; 

FYI करें, जब तक आप विशेष रूप से एक छोटे अक्षर नाम के साथ अपने टेबल बनाया (:

उत्तर

108

आप data dictionary क्वेरी करने के लिए, विशेष रूप से USER_CONS_COLUMNS दृश्य तालिका स्तंभ और इसी की कमी देखने की जरूरत डबल कोट्स का उपयोग करके) तालिका का नाम ऊपरी मामले में डिफॉल्ट किया जाएगा, इसलिए सुनिश्चित करें कि यह आपकी क्वेरी में है। तालिका स्कीमा कि आपकी डिफ़ॉल्ट स्कीमा नहीं है में आयोजित किया जाता है, तो

SELECT * 
    FROM user_constraints 
WHERE table_name = '<your table name>' 
    AND constraint_name = '<your constraint name>'; 

तो आप विचारों को बदलने के लिए आवश्यकता हो सकती है:

आप तो बाधा बारे में अधिक जानकारी देखना चाहते हैं खुद USER_CONSTRAINTS दृश्य क्वेरी साथ:

all_cons_columns 

और

all_constraints 

जहां खंड को जोड़ने:

AND owner = '<schema owner of the table>' 
+0

टाइपो: 'USER_CONS_COLUMNS' –

+2

<आपकी तालिका का नाम> केस संवेदनशील है, मुझे लगता है; यह ऊपरी मामले में होना चाहिए। –

10
SELECT * FROM USER_CONSTRAINTS 
+2

यह आपको स्तंभ नाम नहीं मिलेगा –

6
select constraint_name,constraint_type 
from user_constraints 
where table_name = 'YOUR TABLE NAME'; 

ध्यान दें: तालिका नाम को बड़े अक्षर में होना चाहिए।

मामले में आप फिर तालिका के नाम पता नहीं है,

select constraint_name,constraint_type,table_name 
from user_constraints; 
6

शायद यह मदद कर सकते हैं:

SELECT constraint_name, constraint_type, column_name 
from user_constraints natural join user_cons_columns 
where table_name = "my_table_name"; 

चियर्स

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