Oracle SQL में एक तालिका के लिए सभी बाधाओं के नाम प्रदर्शित करें


115

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

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

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

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

जवाबों:


160

आपको विशेष रूप से तालिका कॉलम और संबंधित बाधाओं को देखने के लिए डेटा शब्दकोश की क्वेरी करने की आवश्यकता है USER_CONS_COLUMNS:

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

FYI करें, जब तक कि आपने विशेष रूप से अपनी तालिका को निम्न केस नाम (दोहरे उद्धरण चिह्नों का उपयोग करके) के साथ नहीं बनाया है, तब तालिका का नाम ऊपरी मामले में डिफ़ॉल्ट होगा, इसलिए यह सुनिश्चित करें कि यह आपकी क्वेरी में ऐसा है।

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

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

यदि तालिका एक स्कीमा में रखी गई है जो आपका डिफ़ॉल्ट स्कीमा नहीं है तो आपको इसके साथ विचार बदलने की आवश्यकता हो सकती है:

all_cons_columns

तथा

all_constraints

जहां क्लॉज में जोड़ना:

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

टाइपो:USER_CONS_COLUMNS
पॉल ड्रेपर

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

ownerदोनों में क्षेत्र (उपयोगकर्ता | सभी | DBA) _constraints और (उपयोगकर्ता | सभी | DBA) _cons_columns तालिका के मालिक (Oracle प्रलेखन प्रति) बाधा के मालिक, नहीं है। इन विचारों में से किसी एक में तालिका का स्वामी उपलब्ध क्षेत्र नहीं है। क्या इसका मतलब यह है कि बाधा मालिक और टेबल मालिक एक ही होना चाहिए?
डेविड फ्लेचर


11

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

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

चियर्स


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

नोट: टेबल का नाम कैप्स में होना चाहिए।

यदि आप टेबल का नाम नहीं जानते हैं,

select constraint_name,constraint_type,table_name 
from user_constraints;


0

नीचे दिए गए दोनों कमांड का उपयोग करें। सब कुछ अपरकेस में होना चाहिए। तालिका का नाम उद्धरण चिह्नों में लिपटा होना चाहिए:

--SEE THE CONSTRAINTS ON A TABLE
SELECT COLUMN_NAME, CONSTRAINT_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'TBL_CUSTOMER';

--OR FOR LESS DETAIL
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'TBL_CUSTOMER';
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.