डर्बी सर्वर में, आप प्रत्येक तालिका के लिए बाधा नाम पुनर्प्राप्त करने के लिए एक चुनिंदा कथन बनाने के लिए स्कीमा की सिस्टम तालिकाओं में जानकारी का उपयोग कैसे कर सकते हैं?डर्बी - बाधाएं
उत्तर
प्रासंगिक मैनुअल Derby Reference Manual है। कई संस्करण उपलब्ध हैं: 10.13 अप्रैल 2017 में वर्तमान था, लेकिन यह मई में 10.3 था 2009
मूल जवाब
SELECT c.constraintname, t.tablename
FROM sysconstraints c, systables t
WHERE c.tableid = t.tableid;
के बाद से डर्बी के लिए पर्याप्त रूप से हाल के संस्करण की आवश्यकता है कि प्रणाली सूची तालिकाओं (10.13 एक comment में kiwicomb123 द्वारा उद्धृत किया गया है) sys.
लगाया जाता है, तो आप स्पष्ट उपयोग करने के लिए क्वेरी को संशोधित कर सकते भी अंकन शामिल हों, और उपयोग:
SELECT c.constraintname, t.tablename
FROM sys.sysconstraints c
JOIN sys.systables t
ON c.tableid = t.tableid;
आप अतिरिक्त कॉलम जोड़ सकते हैं - उदाहरण के लिए, c.type
बाधा प्रकार प्राप्त करने के लिए।
SELECT sc.schemaname, co.constraintname, t.tablename, cg.descriptor, t2.tablename, cg2.descriptor, f.deleterule, f.updaterule
FROM sys.sysconstraints co
JOIN sys.sysschemas sc ON co.schemaid = sc.schemaid
JOIN sys.systables t ON co.tableid = t.tableid
JOIN sys.sysforeignkeys f ON co.constraintid = f.constraintid
JOIN sys.sysconglomerates cg ON f.conglomerateid = cg.conglomerateid
JOIN sys.sysconstraints co2 ON f.keyconstraintid = co2.constraintid
JOIN sys.systables t2 ON co2.tableid = t2.tableid
JOIN sys.syskeys k ON co2.constraintid = k.constraintid
JOIN sys.sysconglomerates cg2 ON k.conglomerateid = cg2.conglomerateid
WHERE co.type = 'F'
and sc.schemaname = current schema
दो वर्णनकर्ता प्रविष्टियों
BTREE की तरह, प्रत्येक तालिका के लिए स्तंभ संख्या की एक सूची शामिल (2,1)
जहां नंबरों के लिए syscolumns तालिका में कॉलम संख्या के अनुरूप संबंधित तालिका
अगर किसी के पास इस प्रश्न में इसे निकालने का एक शानदार तरीका है, तो मैं जानना चाहता हूं। मुझे एक अलग क्वेरी में तालिका के लिए सभी कॉलमों की एक सूची मिल रही है और संख्याओं को प्राप्त करने के लिए वर्णनकर्ताओं को पार्स करने के बाद से नाम निकालने जा रहे हैं।
क्या बाधा प्रकार जानने का कोई तरीका है? –
मुझे लगता है कि मैं आपके लिए आरटीएफएम कर सकता हूं। Sysconstraints.Type एक चार्ज (1) फ़ील्ड है जिसमें मूल्य 'यू' (अनोखा), 'पी' (प्राथमिक), 'एफ' (विदेशी कुंजी) या 'सी' (चेक) है। हालांकि, जब दस्तावेज को पॉइंटर्स दिए जाते हैं, तो आमतौर पर दस्तावेज़ीकरण को पढ़ने और पढ़ने के लिए समझदारी होती है। –
यह क्वेरी डर्बी 10.13 में काम नहीं करती है, आपको टेबल नाम sysconstraints और sysconstraints को "sys" के साथ उपसर्ग करना होगा। उदाहरण के लिए: sysconstraints के बजाय sys.sysconstraints का प्रयोग करें। – kiwicomb123