2013-09-04 8 views
7

पर बाधाओं मिलता है मैं के लिए {"Veg", "NonVeg", "Vegan"}कैसे मैं एक एसक्यूएल तालिका स्तंभ

यह एक CHECK बाधा के साथ मेरी तालिका में किसी स्तंभ MealType (VARCHAR) नामक प्रविष्टि का ध्यान रखेंगे की है।

मैं चयन के लिए इन विकल्पों को प्रदर्शित करना चाहता हूं, लेकिन तालिका में किसी विशेष कॉलम की बाधाओं को जानने के लिए मैं SQL क्वेरी को नहीं समझ पाया।

एमएस एसक्यूएल सर्वर में सिस्टम टेबल पर पहली नज़र से, ऐसा लगता है कि मुझे जानकारी प्राप्त करने के लिए एमएस एसक्यूएल के एपीआई का उपयोग करने की आवश्यकता होगी। मैं इसे पाने के लिए एक एसक्यूएल क्वेरी की उम्मीद कर रहा था।

+4

एक मैटल टाइप टेबल में बाधाओं को पकड़ें, इस तरह यदि वेग, नोटवेग की तुलना में अधिक विकल्प हैं, तो आप आसानी से विस्तार कर सकते हैं। – Elias

+0

आप किस डेटाबेस का उपयोग कर रहे हैं? अगर आपको इसकी आवश्यकता होती है तो बाधा शायद सूची में होती है। – dcaswell

+1

आप किस डीबीएमएस का उपयोग कर रहे हैं? –

उत्तर

9

इस क्वेरी आप एक मेज पर सभी बाधाओं को दिखाना चाहिए:

select chk.definition 
from sys.check_constraints chk 
inner join sys.columns col 
    on chk.parent_object_id = col.object_id 
inner join sys.tables st 
    on chk.parent_object_id = st.object_id 
where 
st.name = 'Tablename' 
and col.column_id = chk.parent_column_id 

इस के साथ बयान चयन की जगह ले सकता:

select substring(chk.Definition,2,3),substring(chk.Definition,9,6),substring(chk.Definition,20,5) 
+0

मेरी अज्ञानता क्षमा करें, लेकिन यहाँ चॉक क्या है? – Raja

+0

चक उपनाम है जो मैं sys.check_constraints के लिए उपयोग कर रहा हूं, क्या आपको बाधाओं को अलग करने की आवश्यकता है? – orgtigger

+0

हाँ। मदद करने के लिए धन्यवाद - मैंने कभी पहले एसक्यूएल का उपयोग नहीं किया है। – Raja

12

सबसे आसान और तेज तरीका उपयोग करने के लिए है:

sp_help 'TableName' 
+0

यह जानकारी प्रोग्रामेटिक रूप से प्राप्त करने के लिए एक भयानक समाधान है। –

+0

यह ठीक है, लेखक उन्हें प्रोग्रामेटिक रूप से प्राप्त नहीं करना चाहते थे; वे सिर्फ बाधाओं पर एक सूची चाहते थे। यदि आप किसी डीबी को ट्विक कर रहे हैं या किसी समस्या को ठीक कर रहे हैं, तो sp_help अब तक का सबसे आसान है। – DaBlue

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