आप या तो INSERT IGNORE
. का उपयोग कर सकते हैं या REPLACE
या INSERT ... ON DUPLICATE KEY UPDATE ...
प्रत्येक के लिए आपको product_id, ip_address
. पर एक अद्वितीय बाधा की आवश्यकता होती हैइग्नोर डालें
INSERT IGNORE INTO products VALUES (null, 111, '8.8.8.8')
अगर प्रविष्टि पहले से मौजूद है, तो सम्मिलन को अनदेखा कर देगा।
बदलें
REPLACE INTO products VALUES (null, 111, '8.8.8.8')
एक डिलीट प्लस एक नया इंसर्ट करेगा।
सम्मिलित करें ... अद्यतन करें
INSERT INTO products VALUES (null, 111, '8.8.8.8')
ON DUPLICATE KEY UPDATE products SET last_modified = NOW()
सम्मिलित करने का प्रयास करेंगे और यदि वह विफल रहता है तो मौजूदा रिकॉर्ड को अपडेट करें।
आपके मामले में मुझे लगता है कि आपको INSERT IGNORE
. के साथ ठीक होना चाहिए , हालांकि यदि आप अन्य मानों को बदलना चाहते हैं यदि रिकॉर्ड पहले से मौजूद है, INSERT ... UPDATE ...
अच्छा काम करना चाहिए।
मैं आमतौर पर REPLACE
. का उपयोग करने की अनुशंसा नहीं करता जब तक आप वास्तव में DELETE FROM table WHERE ...
. चाहते हैं प्लस INSERT INTO TABLE ...
अपडेट करें
इसके लिए (इस उदाहरण के लिए) संयोजन उत्पाद, ip_address के लिए एक अद्वितीय अनुक्रमणिका की आवश्यकता है। आप इसे इसके साथ प्राप्त कर सकते हैं
ALTER TABLE products
ADD UNIQUE INDEX `UIDX_PRODUCT__IP_ADRESS`(product, ipaddress);