इस स्थिति पर MySQL की विशेष कार्यक्षमता है। इसे INSERT...ON DUPLICATE KEY UPDATE
. कहा जाता है . यह क्या करता है INSERT
. करने की कोशिश करता है एक रिकॉर्ड लेकिन अगर यह पहले से मौजूद है, तो यह सिर्फ UPDATE
होगा यह। '
इस कार्यक्षमता को काम करने के लिए, आपके पास एक UNIQUE
. होना चाहिए मेज पर प्रतिबंध। आपके उदाहरण के आधार पर, मैं देख सकता हूँ कि आप इसके अस्तित्व के लिए दो स्तंभों पर जाँच कर रहे हैं। अगर आपके पास पहले से एक PRIMARY KEY
है , आप बस एक UNIQUE
जोड़ सकते हैं दोनों स्तंभों पर प्रतिबंध।
ALTER TABLE oc_product_attribute
ADD CONSTRAINT tb_uq UNIQUE(PRODUCT_ID, ATTRIBUTE_ID)
एक बार इसे निष्पादित करने के बाद, अब आप INSERT..ON DUPLICATE KEY UPDATE
का उपयोग कर सकते हैं
INSERT INTO oc_product_attribute (PRODUCT_ID, ATTRIBUTE_ID, OtherCol, TEXT)
SELECT MAX(PRODUCT_ID), MAX(ATTRIBUTE_ID), 1, 'XYZ'
FROM
(
SELECT PRODUCT_ID, NULL ATTRIBUTE_ID
FROM oc_product_description
WHERE NAME = 'PRODUCT_NAME_HERE'
UNION ALL
SELECT NULL PRODUCT_ID, ATTRIBUTE_ID
FROM oc_attribute_description
WHERE NAME='ATTRIBUTE_NAME_HERE'
) x
ON DUPLICATE KEY UPDATE TEXT = 'ABC'
-- change OtherCol to the name of your column which you want to insert 1