2010-06-25 21 views
6

मेरे पास एक्सेल शीट है जिसमें लगभग 2.000 पंक्तियां हैं जिन्हें मैं अपने डेटाबेस में सम्मिलित करना चाहता हूं।MySQL: अगर विदेशी कुंजी मौजूद है

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

मुझे पता है कि मैं विदेशी कुंजी जांच को अनदेखा कर सकता हूं, लेकिन यह वही नहीं है जो मैं चाहता हूं। मैं विदेशी कुंजी जांच को अनदेखा नहीं करना चाहता, मैं सिर्फ खराब प्रश्नों को निष्पादित नहीं करना चाहता हूं।

उदाहरण:

INSERT INTO test (id, value) VALUES (10, 20); 
INSERT INTO test (id, value) VALUES (20, 20); 

पहली क्वेरी विफल रहता है, के बाद से TEST.id संदर्भ foobar.id और कोई foobar.id = 10. हालांकि, दूसरे क्वेरी काम करेगा, क्योंकि foobar.id = 20 मौजूद है, लेकिन दूसरी क्वेरी निष्पादित नहीं किया जाएगा, क्योंकि पहला पहले से ही असफल रहा।

क्या कोई तरीका है कि मुझे पहली क्वेरी पर कोई त्रुटि नहीं मिली है और मेरे अन्य प्रश्न अभी भी निष्पादित किए जाएंगे?

मैं एक php स्क्रिप्ट लिख सकता हूं, लेकिन मैं यहां एक MySQL समाधान पसंद करूंगा।

उत्तर

3

तुम कुछ की तरह एक का चयन का परिणाम सम्मिलित करने के लिए बदल सकता है, तो:

INSERT INTO test (id, value) 
SELECT foobar.id, 20 
FROM foobar WHERE id = 10; 
+0

सीमा 1 जोड़ने के लिए है, अन्यथा प्रत्येक डालने एकाधिक पंक्तियों हो सकता है। – MJB

+0

@ एमजेबी मुझे लगता है कि आईडी ओपी प्रति 'foobar' पर प्राथमिक कुंजी है, इसलिए 'LIMIT' * की आवश्यकता नहीं होनी चाहिए। –

+0

यदि मैं ऐसा करता हूं, तो डेटा को "परीक्षण" में डालना संभव है, जो पहले से ही "foobar" में है, है ना? लेकिन मेरे पास जोड़ने के लिए नया डेटा है, जो एक्सेल शीट से आता है। क्या मैं इसे किसी भी तरह समायोजित कर सकता हूं, इसलिए मैं इसमें नया डेटा जोड़ सकता हूं? – user375700

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