Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

संग्रहीत प्रक्रिया के बिना अद्यतन या सम्मिलित करने के लिए MySQL में IF कथन का उपयोग करना?

इस स्थिति पर 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql संग्रहीत कार्यविधि मानक क्वेरी से 20 गुना धीमी है

  2. ज़ेंड डीबी / माइस्क्ल - चयन के साथ डालें

  3. MySQL और हिम तेंदुए के साथ बार-बार परेशानी होने पर - लॉक करने में असमर्थ ./ibdata1, त्रुटि:35

  4. MySQL डीबी से मान पुनर्प्राप्त करते समय गलत तरीके से एन्कोड किए गए वर्ण प्राप्त करना

  5. कैसे mysql में तारीखों की विशिष्ट श्रेणी के साथ रिपोर्ट बनाएं