मुझे लगता है कि आप पूछ रहे हैं क्योंकि आप प्रलेखन पढ़ते हैं और यह आपको समझ में नहीं आया।
एक विदेशी कुंजी (एफके) टेबलबी में एक फ़ील्ड है जो तालिका के समान क्षेत्र, आमतौर पर प्राथमिक कुंजी (पीके) के समान मूल्य रखती है। तो स्यूडोकोड में:
Create TableA:
A_id is PK,
somefield,
anotherfield
Create TableB:
B_id is PK,
A_id is FK to TableA,
farmfield,
outstandingfield
Create constraint on TableB:
In TableB A_id references TableA(A_id),
Don't allow updates to TableA(A_id),
Delete records from TableB that have the same A_id as deleted records in TableA
फिर जब आप एक प्रश्न है कि दोनों तालिकाओं शामिल करते हैं, तो आप अपने FK पर शामिल हो सकते हैं:
SELECT a.somefield, b.farmfield FROM TableA a JOIN TableB b ON (a.A_id=B.A_id);
और जब आप TableA से हटाते हैं, जिसे आप हटाना नहीं है टेबलबी से। यह स्वचालित रूप से हो जाएगा क्योंकि बाधा ने कहा "टेबलबी से रिकॉर्ड्स हटाएं जिनके पास टेबल ए में हटाए गए रिकॉर्ड्स के समान ए_आईडी है"।
और जब आप टेबलबी में डालते हैं, तो आपको या तो वैध ए_आईडी देना होगा, या, कॉलम को परिभाषित करने के तरीके के आधार पर, A_id =NULL
छोड़ दें।
यह भी याद रखना महत्वपूर्ण है कि MySQL चुपचाप टेबल निर्माण समय पर इनलाइन विदेशी कुंजी वाक्यविन्यास को छोड़ देता है, उदा। 'टेबल foo बनाएं (... बार int (5) unsigned not null संदर्भ baz (bar) ...) इंजन = InnoDB; '** ** एक विदेशी कुंजी नहीं बनायेगा। फ़ील्ड घोषणाओं के बाद स्पष्ट रूप से विदेशी कुंजी निर्दिष्ट करें ... बनाएं ... (... कुंजी कुंजी_नाम (कॉलम_नाम) अपडेट करें विदेशी_टेबल (विदेशी_column) अद्यतन पर ... DELETE ...) 'वाक्यविन्यास। उम्मीद है की यह मदद करेगा। – Dereleased