2010-01-19 12 views
34

मैंने अपनी तालिकाओं में से एक पर एक विदेशी कुंजी बनाने की कोशिश की, एक अलग स्कीमा में एक तालिका के कॉलम का संदर्भ दिया।किसी अन्य स्कीमा में तालिका के लिए विदेशी कुंजी संदर्भ

कुछ इस तरह:

ALTER TABLE my_schema.my_table ADD (
    CONSTRAINT my_fk 
    FOREIGN KEY (my_id) 
    REFERENCES other_schema.other_table(other_id) 
) 

जब से मैं आवश्यक अनुदान थी, लेकिन इसे ठीक से काम किया।

अब मुझे आश्चर्य है कि अलग-अलग स्कीमा में तालिकाओं का संदर्भ नहीं देने के कारण हैं या कुछ भी सावधान रहना है?

उत्तर

32

ऐसा करने में कोई समस्या नहीं है। टेबल के बीच विदेशी कुंजी संबंध स्थापित करते समय स्कीमा का कोई प्रभाव नहीं पड़ता है। बस सुनिश्चित करें कि उपयुक्त लोगों के पास स्कीमा के लिए आवश्यक अनुमतियां हैं जिनका आप उपयोग करना चाहते हैं।

0

एक कारण यह समस्या पैदा कर सकता है कि आपको सही क्रम में चीजों को हटाने के लिए सावधान रहना होगा। यह आपके टेबल में अनाथों के लिए कितना महत्वपूर्ण है इस पर निर्भर करता है कि यह अच्छा या बुरा हो सकता है।

+1

अच्छा, लेकिन यह मेरी स्कीमा में एक तालिका का संदर्भ देने पर वही है। सही? –

+0

हां, यह वही है। हालांकि, यह सावधान रहना कुछ है –

4

यह बिल्कुल एक विदेशी कुंजी के रूप में काम करेगा जो एक तालिका को अपनी स्कीमा में संदर्भित करता है।

नियमित विदेशी कुंजी के साथ, my_id को इंडेक्स करना न भूलें यदि पैरेंट कुंजी कभी अपडेट हो या यदि आप मूल तालिका से प्रविष्टियों को हटाते हैं (अनदेखा विदेशी कुंजी भारी विवाद का स्रोत हो सकती है और सूचकांक आमतौर पर उपयोगी होता है वैसे भी)।

4

एकमात्र चीज जो मैंने भाग ली थी, यह सुनिश्चित कर रहा था कि अन्य स्कीमा पर अनुमति मौजूद है। सामान्य सामान - यदि किसी भी कारण से उन अनुमतियां गायब हो जाती हैं, तो आप इसके बारे में सुनेंगे।

2

यदि आप ऐसे संगठन में हैं जहां अलग-अलग लोगों के पास अलग-अलग स्कीमा पर अधिकार है, तो मुझे लगता है कि अन्य स्कीमा को अक्षम करने की क्षमता, या यहां तक ​​कि ड्रॉप और फिर से बनाना, अपनी बाधा देना अच्छा अभ्यास है।

उदाहरण के लिए, उन्हें अपनी तालिका को छोड़ने या छीनने की आवश्यकता हो सकती है और फिर कुछ (बहुत अजीब) समर्थन समस्या को संभालने के लिए इसे फिर से लोड करने की आवश्यकता हो सकती है। जब तक आप रात के मध्य में नहीं जाना चाहते हैं, मैं आपको अस्थायी रूप से अपनी बाधा को हटाने की क्षमता देने की सलाह देता हूं। (मैं अपने स्वयं के अलर्ट सेट करने की भी सिफारिश करता हूं ताकि आप जान सकें कि आपकी बाहरी बाधाओं में से कोई भी अक्षम या गिरा दिया गया है)। जब आप संगठनात्मक/स्कीमा लाइनों को पार कर रहे हैं, तो आप दूसरों के साथ अच्छी तरह से खेलना चाहते हैं। विन्सेंट का सूचकांक उस सूचकांक का एक और हिस्सा है।

संबंधित मुद्दे

 संबंधित मुद्दे