2012-04-28 13 views
5

पहले से ही ऐसे विषयों की खोज की है और 2 अलग-अलग समाधान मिलते हैं लेकिन कोई भी काम नहीं करता है।MySQL INSERT IGNORE या डिप्लिकेट कुंजी DO_NOTHING

मेरी तालिका में संरचना है। आईडी (auto_increment primary_key) | यूआईडी (int) | FAV_ID (int) |

यदि यूआईडी और एफएवी_आईडी (दोनों) पहले से मौजूद हैं तो मुझे इस FAV_TABLE में नया रिकॉर्ड डालना होगा। मेरी क्वेरी का

उदाहरण:

INSERT INTO FAV_TABLE (uid, fav_id) VALUES ($u_id,$s_id) ON DUPLICATE KEY UPDATE uid = uid 

या यह एक

INSERT IGNORE FAV_TABLE (uid, fav_id) VALUES ($u_id,$s_id); 

mysql मैनुअल के रूप में इस प्रश्न के रिकॉर्ड नहीं जोड़ता है ही अगर PRIMARY_KEY ही है कहते हैं। और अगर मुझे यूआईडी + fav_id अद्वितीय है तो मुझे रिकॉर्ड जोड़ने की आवश्यकता नहीं है। कोई समाधान? धन्यवाद

उत्तर

4

आप उन स्तंभों पर एक UNIQUE KEY जोड़ने की जरूरत:

ALTER TABLE FAV_TABLE ADD UNIQUE KEY(uid, fav_id); 
+0

महान, बहुत बहुत शुक्रिया! – 265

2

INSERT IGNORE या ON DUPLICATE KEY केवल तभी काम करता है जब एक अनन्य कुंजी डुप्लिकेट की जाती है।

आपको uid और fav_id दोनों क्षेत्रों में UNIQUE अनुक्रमणिका जोड़ने की आवश्यकता है। इस तरह, जब आप एक डुप्लिकेट जोड़ी डालते हैं, तो इसे अनदेखा कर दिया जाएगा।

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