SQLite
 sql >> डेटाबेस >  >> RDS >> SQLite

SQLite में विदेशी कुंजी की सूची लौटाएं

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 इन परिणामों में सभी कथन सूचीबद्ध होंगे।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रोबोइलेक्ट्रिक एक्सेसिंग डेटाबेस एक त्रुटि फेंकता है

  2. एक पूर्व-आबादी वाला डेटाबेस एपीआई 28 पर काम नहीं करता है, ऐसा कोई टेबल अपवाद नहीं फेंकता है

  3. SQLite में डेटा डालने पर बाधाओं का उल्लंघन करने वाली पंक्तियों को कैसे छोड़ें?

  4. SQLite परिणामों में टेक्स्ट की लंबी पंक्तियों को कैसे लपेटें?

  5. group_concat और sqlite में पंक्ति संख्या का उपयोग कैसे करें