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

SQLite में विदेशी कुंजी समर्थन कैसे सक्षम करें

SQLite में, विदेशी कुंजी बाधाओं को तब तक लागू नहीं किया जाता जब तक कि विदेशी कुंजी समर्थन सक्षम न किया गया हो।

विदेशी कुंजियों को सक्षम करने में निम्नलिखित शामिल हैं:

  1. SQLite संकलित करते समय विदेशी कुंजी सक्षम करें।
  2. रनटाइम पर विदेशी कुंजी सक्षम करें।

SQLite संकलित करते समय विदेशी कुंजी सक्षम करें

जब SQLite को संकलित करने की बात आती है, तो यह सक्षम करने . की बात नहीं है विदेशी कुंजियाँ - यह अक्षम न होने . की बात है उन्हें।

SQLite को संकलित करते समय विदेशी कुंजियों को सक्षम करने का सीधा सा अर्थ है कि आप SQLITE_OMIT_FOREIGN_KEY का उपयोग नहीं करते हैं और SQLITE_OMIT_TRIGGER इसे संकलित करते समय।

अगर SQLITE_OMIT_TRIGGER परिभाषित किया गया है लेकिन SQLITE_OMIT_FOREIGN_KEY नहीं है, तो विदेशी कुंजी परिभाषाओं को पार्स किया जाता है और PRAGMA foreign_key_list का उपयोग करके पूछताछ की जा सकती है , लेकिन विदेशी कुंजी बाधाओं को लागू नहीं किया जाता है। PRAGMA foreign_keys कमांड इस कॉन्फ़िगरेशन में नो-ऑप है।

अगर OMIT_FOREIGN_KEY परिभाषित किया गया है, तो विदेशी कुंजी परिभाषाओं को भी पार्स नहीं किया जा सकता है (विदेशी कुंजी परिभाषा निर्दिष्ट करने का प्रयास एक वाक्यविन्यास त्रुटि है)।

रनटाइम पर विदेशी कुंजी सक्षम करें

यहां तक ​​​​कि जब पुस्तकालय को विदेशी कुंजी बाधाओं के साथ संकलित किया गया है, तब भी आपको रनटाइम पर विदेशी कुंजी समर्थन सक्षम करने की आवश्यकता है।

आप इसे निम्न कोड के साथ कर सकते हैं:

PRAGMA foreign_keys = ON;

अधिकांश PRAGMA . की तरह कथन, आप वैकल्पिक रूप से ON . को बदल सकते हैं TRUE . के साथ , YES , या 1

एक बार जब आप इसे चला लेते हैं, तो आपकी विदेशी कुंजियाँ लागू हो जाएँगी।

ध्यान दें कि बनाने . के लिए इस सेटिंग की आवश्यकता नहीं है विदेशी कुंजी, लेकिन यह लागू करने . के लिए आवश्यक है विदेशी कुंजी।

अन्य कनेक्शन

ध्यान दें कि यह केवल वर्तमान डेटाबेस कनेक्शन के लिए विदेशी कुंजी बाधाओं को सक्षम करता है।

यदि आप एक नया कनेक्शन खोलते हैं, तो आपको उस स्टेटमेंट को फिर से चलाने की आवश्यकता होगी यदि आप उस संबंध में विदेशी कुंजी को लागू करना चाहते हैं।

वर्तमान कनेक्शन के लिए विदेशी कुंजी समर्थन जांचें

आप निम्न कोड चलाकर यह भी देख सकते हैं कि आपके वर्तमान कनेक्शन के लिए विदेशी कुंजियाँ पहले ही सक्षम की गई हैं या नहीं।

PRAGMA foreign_keys;

परिणाम:

1

मेरे मामले में, मैंने पहले ही इस कनेक्शन के लिए विदेशी कुंजियाँ सक्षम कर दी हैं, इसलिए परिणाम 1 है। यदि विदेशी कुंजियाँ अक्षम की गई थीं, तो परिणाम 0 होगा।

यहां अक्षम करने, मान की जाँच करने, फिर मान को सक्षम करने और फिर से जाँचने का एक उदाहरण दिया गया है।

PRAGMA foreign_keys = FALSE;
PRAGMA foreign_keys;
PRAGMA foreign_keys = YES;
PRAGMA foreign_keys;

परिणाम:

sqlite> PRAGMA foreign_keys = FALSE;
sqlite> PRAGMA foreign_keys;
foreign_keys
------------
0           
sqlite> PRAGMA foreign_keys = YES;
sqlite> PRAGMA foreign_keys;
foreign_keys
------------
1           

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NullPointerException getReadableDatabase पर ()

  2. SQLite में कॉलम के डेटा प्रकार की जांच करने के 5 तरीके

  3. SQLite में महीने का अंत लौटाएं

  4. स्थानीय डेटाबेस और पार्स के साथ सिंक कैसे करें?

  5. स्ट्रिंग का उद्देश्य क्या है [] जहां इंट डिलीट में आर्ग (स्ट्रिंग टेबल, स्ट्रिंग जहां क्लॉज, स्ट्रिंग [] जहां एआरजीएस) फ़ंक्शन?