आप कैसे बता सकते हैं कि DB2 की एक तालिका में एक प्राथमिक कुंजी है?


9

हम एक उपकरण का उपयोग कर रहे हैं जिसके लिए हमारे DB2 डेटाबेस में एक विशिष्ट कुंजी को परिभाषित करने के लिए विशिष्ट तालिकाओं की आवश्यकता है।

क्या डीबी पर एक चयन कथन का उपयोग करने का एक तरीका है यह देखने के लिए कि क्या किसी दी गई तालिका में एक है?

धन्यवाद।

जवाबों:


10

डिस्क्लेमर: मुझे डीबी 2 नहीं पता है।

मैं बस "db2 तालिका परिभाषा" के साथ इन googled।

स्रोत:

SELECT * 
FROM SYSIBM.SYSTABLES TAB,SYSIBM.SYSCOLUMNS COL 
WHERE TAB.CREATOR = COL.TBCREATOR 
AND TAB.CREATOR = 'xxxx' 
AND TAB.NAME = 'xxxxxxxxxxxxx' 
AND TAB.NAME = COL.TBNAME 
AND TAB.TYPE = 'V' ( OR 'T' ) 
ORDER BY 1,2;

स्रोत:

SELECT * FROM syscat.tabconst WHERE type = 'P';

1
TAB.TYPE = 'V' आपको विचार देगा, जो मुझे लगता है कि आप नहीं चाहते हैं। तालिकाओं के लिए TAB.TYPE = 'T' का उपयोग करें।
गिल्सहिट

8

आप एक कर सकते हैं db2look, जो आपको तालिका के लिए ddls देगा।

db2look -d db_name -e -x -z schema_name -t table_name

Dba.se में आपका स्वागत है और इस उपयोगी उत्तर के लिए धन्यवाद - मुझे आशा है कि आपको मेरे प्रारूपण संपादित करने में कोई आपत्ति नहीं है?
जैक का कहना है कि topanswers.xyz

@JackDouglas - उन संपादन के लिए धन्यवाद, अब बहुत पठनीय लगता है
गोविन्द कैलास

0

यह संभवतः सबसे आसान विकल्प है, क्योंकि प्राथमिक कुंजी एक मिलान सूचकांक द्वारा समर्थित है:

select COLNAMES from SYSIBM.SYSINDEXES where tbname = 'TABLE' and uniquerule = 'P';

आप कॉलम कैटलॉग तालिका की क्वेरी भी कर सकते हैं:

select NAME from SYSIBM.SYSCOLUMNS where tbname = 'TABLE' and keyseq > 0 order by keyseq;

2
प्राथमिक कुंजी एक इंडेक्स नहीं है (हालांकि यह एक द्वारा समर्थित है)।
mustaccio

0
  1. SYSCAT.INDEXES.UNIQUERULE (यदि UNIQUERULE P है तो प्राथमिक कुंजी है)
  2. SYSCAT.TABCONST.TYPE (यदि प्रकार पी है तो प्राथमिक कुंजी बाधा है)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.