क्या पोस्टग्रेएसक्यूएल में सशर्त रूप से विदेशी कुंजी जोड़ने के लिए यह संभव है?सशर्त पोस्टग्रेएसक्यूएल विदेशी कुंजी
कुछ की तरह: ALTER TABLE table1 ADD FOREIGN KEY (some_id) REFERENCES other_table WHERE some_id NOT IN (0,-1) AND some_id IS NOT NULL;
विशेष रूप से, मेरे संदर्भ तालिका सभी धनात्मक पूर्णांक है (1 +) लेकिन तालिका मैं विदेशी कुंजी जोड़ने की जरूरत है शून्य (0), अशक्त और नकारात्मक एक (शामिल कर सकते हैं करने के लिए -1) इसके बजाय, सभी का अर्थ कुछ अलग है।
नोट्स:
मैं पूरी तरह से पता है कि इस गरीब तालिका डिजाइन है कर रहा हूँ, लेकिन यह एक चतुर 10+ साल पहले बनाया जब सुविधाओं और संसाधनों हम है मौजूद नहीं था इस बिंदु पर उपलब्ध चाल था । यह प्रणाली सैकड़ों खुदरा स्टोर चला रही है इसलिए वापस जाकर इस बिंदु पर विधि को बदलने में महीनों लग सकते हैं जो हमारे पास नहीं है।
मैं ट्रिगर का उपयोग नहीं कर सकता, यह एक विदेशी कुंजी के साथ किया जाना चाहिए।
जीनियस! आप सही हैं कि यह थोड़ा बदसूरत है, लेकिन डेटाबेस अभी भी खुद का प्रबंधन करता है, इसलिए यह चाल चलाना चाहिए! – trex005
एएच, क्या आपने कभी पोस्टग्रेस स्रोत पर काम किया है? यह एक शानदार सुविधा हो सकती है जिसे आप दृश्यों के ठीक पीछे कर कर जोड़ सकते हैं। – trex005
@ trex005: मैंने पीजी स्रोतों पर काम नहीं किया है। लेकिन हर समय हैकर की सूची पर झुकाव और फिर मेरी धारणा यह है कि इस तरह की एक सुविधा का स्वागत नहीं किया जाएगा। यदि आप _your_ उदाहरण को सामान्यीकृत करते हैं ('0' और' -1' के अलावा कुछ भी मिलान करें) और सभी संभावित मामलों को कवर करने वाले सामान्य वाक्यविन्यास के बारे में सोचें, तो आपको काफी जटिल वाक्य रचनात्मक निर्माण मिलेगा। पैमाने के दूसरी तरफ: ऐसा कुछ भी नहीं है जिसे आप पहले से मौजूद मौजूदा उपकरणों से नहीं कर सकते हैं। शुद्ध परिणाम: दुर्लभ संसाधन (डेवलपर समय/बजट) अन्य TODO वस्तुओं पर बेहतर भुगतान करेगा। लेकिन यह केवल मेरी छाप है। उनसे संपर्क करने के लिए स्वतंत्र हो जाओ। –