2011-10-06 12 views
5

मैं एक समारोह को लागू करने के लिए एक डेटाबेस में (सामने अंत के माध्यम से) कुछ तत्वों को हटाने को रोकने के लिए अगर वे अन्य अन्य तालिकाओं में उनसे जुड़े आइटम नहीं हैं पर काम कर रहा हूँ। अन्यथा वे अन्य टेबल उन चाबियों की तलाश में हैं जो वहां नहीं हैं।MySQL: अन्य तालिकाओं में एक विदेशी कुंजी के रूप में एक विशिष्ट प्राथमिक कुंजी का उपयोग कैसे किया जाए?

यदि आप समझ गया कि मेरी टोपी आप के लिए बंद है।

मैं के माध्यम से देखने के लिए टेबल के कई सेट है और, या तो एक SQL क्वेरी या एक MySQL Workbench विशेषता यह है कि मुझे बता सकते हैं की जरूरत है प्राथमिक कुंजी (स्तंभ नाम, न कि वास्तविक मूल्य) के प्रवेश पर अगर वह कुंजी है कहीं और एक विदेशी कुंजी के रूप में इस्तेमाल किया।

अन्यथा यदि किसी एक बेतकल्लुफ़ वैकल्पिक हल जानता है, वह भी बहुत अच्छा होगा!

+0

संभावित डुप्लिकेट [MySQL: मैं उन सभी तालिकाओं को कैसे ढूंढूं जिनके पास विशेष तालिका.column संदर्भित विदेशी कुंजी हैं और उन विदेशी कुंजी के लिए मान हैं?] (Http://stackoverflow.com/questions/806989/mysql-how -to-ए-खोजने के सभी-टेबल-कि-है-विदेशी कुंजी-कि-संदर्भ-विशेष) – Johan

+0

क्यों नहीं बस आइटम को हटाने और किसी भी त्रुटि है कि आप FK उल्लंघन से प्राप्त कर पकड़ने की कोशिश? –

+0

देखें: http://dev.mysql.com/doc/refman/5.0/en/table-constraints-table.html (विशिष्ट) और http://dev.mysql.com/doc/refman/5.0/en/ info-schema.html (सामान्य रूप से) – Johan

उत्तर

4
SELECT 
    table_name, column_name  
FROM 
    information_schema.key_column_usage 
WHERE 
    referenced_table_name = '<table>' 
    and referenced_column_name = '<primary key column>' 
+0

key_column_usage मौजूद नहीं है? – spuriosity

+0

शायद ऐसा इसलिए है क्योंकि उपयोगकर्ता नाम आप के साथ कनेक्ट कर रहे हैं तालिका देखने के लिए पहुँच अधिकार नहीं है .. – StevieG

+0

माफ करना, अद्यतन करने के लिए होती है, मेरे इंटरफेस को फिर से खोलने के लिए था, यह स्कीमा (बेतरतीब ढंग से अंदर फंस गया था, नहीं है पूछना!)। वैसे भी, इसे मिला और आपका कोड इस्तेमाल किया, लेकिन मुझे निम्न त्रुटि मिल रही है: त्रुटि कोड: 1054. अज्ञात कॉलम 'ऑपरेटिंग सिस्टम' 'जहां खंड' में। ऑपरेटिंग सिस्टम एक टेबल नाम है और क्वेरी में संदर्भित-तालिका-नाम के तहत है ... – spuriosity

0

एक समाधान this post में वर्णन किया गया INFORMATION_SCHEMA तालिका से यह जानकारी प्राप्त कर सके।

1) यदि आप अपने कोड से इन तालिकाओं पर काम करना चाहते हैं, तो उन्हें एक कंटेनर के रूप में लाएं, उदाहरण के लिए अपने कोड में ArrayList और अपना तर्क करें।

2) यदि आप अपने संग्रहित प्रक्रिया से इन तालिकाओं पर काम करना चाहते हैं, तो कंटेनरों के माध्यम से अपने जावा कोड में उसी काम को प्राप्त करने के लिए अस्थायी तालिकाओं का उपयोग करें।

+0

मैं उन्हें हाइबरनेट के साथ ला रहा हूं और उन्हें एक ऐरेलिस्ट में डाल रहा हूं – spuriosity

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