SQLite में, आप किसी दी गई तालिका के लिए विदेशी कुंजियों की सूची वापस करने के लिए PRAGMA कथन का उपयोग कर सकते हैं।
सिंटैक्स
वाक्य रचना इस प्रकार है:
PRAGMA foreign_key_list(table-name);
जहां table-name
उस तालिका का नाम है जिससे आप विदेशी कुंजियों की सूची चाहते हैं।
उदाहरण
सबसे पहले, आइए एक विदेशी कुंजी बाधा के साथ एक तालिका बनाएं।
CREATE TABLE Types(
TypeId INTEGER PRIMARY KEY,
Type
);
CREATE TABLE Pets(
PetId INTEGER PRIMARY KEY,
PetName,
TypeId,
FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
);
इस मामले में मैंने दो टेबल बनाए। पालतू जानवर तालिका में एक विदेशी कुंजी बाधा है जो प्रकार . का संदर्भ देती है टेबल।
अब मैं PRAGMA foreign_key_list(table-name)
. का उपयोग कर सकता हूं उस विदेशी कुंजी को पुनः प्राप्त करने के लिए कथन।
.mode line
PRAGMA foreign_key_list(Pets);
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
id = 0 seq = 0 table = Types from = TypeId to = TypeId on_update = NO ACTION on_delete = NO ACTION match = NONE
यह PRAGMA स्टेटमेंट आठ कॉलम लौटाता है, इसलिए मैंने .mode line
का इस्तेमाल किया परिणामों को लंबवत रूप से आउटपुट करने के लिए। ऐसा इसलिए है कि आपको बग़ल में स्क्रॉल करने की ज़रूरत नहीं है।
इस मामले में मेज पर केवल एक विदेशी कुंजी बाधा है। यदि और होते, तो उन्हें परिणामों में सूचीबद्ध किया जाता।
कोई विदेशी कुंजी नहीं
अगर मैं उसी PRAGMA स्टेटमेंट को टेबल पर बिना किसी विदेशी कुंजी के चलाऊं तो क्या होगा।
PRAGMA foreign_key_list(Types);
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
(यह खाली है क्योंकि कोई विदेशी कुंजी नहीं है।)
टेबल स्टेटमेंट बनाएं वापस करें
प्रत्येक तालिका को विदेशी कुंजी के साथ बनाने के लिए उपयोग किए गए वास्तविक SQL कोड को वापस करने के लिए निम्न कथन का उपयोग किया जा सकता है।
.mode column
SELECT sql
FROM sqlite_master
WHERE sql LIKE('%REFERENCES%');
परिणाम:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) )
इस मामले में डेटाबेस में केवल एक विदेशी कुंजी होती है (जिसे मैंने इस उदाहरण के लिए बनाया है)। यदि और भी थे, तो CREATE TABLE
इन परिणामों में सभी कथन सूचीबद्ध होंगे।