foreign_key_checks: सत्र और वैश्विक स्कोप
foreign_key_checks एक सर्वर सिस्टम वेरिएबल है जो विदेशी कुंजी कंस्ट्रेंट लागू करने को नियंत्रित करता है। इसका दो स्कोप होता है: Session (वर्तमान कनेक्शन) और Global (सभी नए कनेक्शन)।
वेरिएबल गुण
| गुण | मान |
|---|---|
| सिस्टम वेरिएबल | foreign_key_checks |
| स्कोप | Global, Session |
| डायनामिक | हाँ |
| प्रकार | Boolean |
| डिफ़ॉल्ट मान | ON (1) |
सेट करना
-- वर्तमान सत्र के लिए SET foreign_key_checks = 0; SET foreign_key_checks = 1; -- वैश्विक रूप से (SUPER विशेषाधिकार आवश्यक) SET GLOBAL foreign_key_checks = 0; SET GLOBAL foreign_key_checks = 1;
foreign_key_checks = 0 (अक्षम) का प्रभाव
- DDL कथन प्रभावित:
DROP SCHEMA: विदेशी कुंजी द्वारा संदर्भित टेबल वाले स्कीमा को ड्रॉप करने की अनुमति देता हैDROP TABLE: अन्य टेबल द्वारा संदर्भित विदेशी कुंजी वाली टेबल को ड्रॉप करने की अनुमति देता है
- DML कथन प्रभावित:
INSERT/UPDATE: अमान्य विदेशी कुंजी मानों की अनुमति देता हैLOAD DATA: विदेशी कुंजी जांच को छोड़ देता है
- मौजूदा डेटा स्कैन नहीं किया जाता: 1 पर सेट करने पर मौजूदा पंक्तियों की पुष्टि नहीं होती
foreign_key_checks = 1 (सक्षम, डिफ़ॉल्ट) का प्रभाव
- सभी विदेशी कुंजी कंस्ट्रेंट लागू होते हैं
- मौजूदा डेटा को स्कैन/सत्यापित नहीं करता (केवल नए परिवर्तनों की जांच करता है)
foreign_key_checks=0के दौरान डाली गई पंक्तियाँ असंगत रह सकती हैं
सामान्य उपयोग के मामले
- बड़े डंप लोड करना:
SET foreign_key_checks=0→ लोड →SET foreign_key_checks=1(तेज़, क्रम स्वतंत्र) - स्कीमा पुनर्गठन: टेबल ड्रॉप/पुनर्निर्माण करते समय
- डेटा माइग्रेशन: जब संदर्भित डेटा बाद में लोड होता है
सावधानी
उत्पादन में सावधानी से उपयोग करें। अक्षम करने से डेटा अखंडता उल्लंघन हो सकते हैं जिन्हें बाद में पता लगाना कठिन होता है। हमेशा पुनः सक्षम करने के बाद डेटा सत्यापित करें:
SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'FOREIGN KEY';