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

क्या मैं SET विकल्प का उपयोग करके INSERT क्वेरी के साथ ON DUPLICATE KEY UPDATE का उपयोग कर सकता हूं?

मैंने उपयोग किया है ON DUPLICATE KEY UPDATE बहुत। कुछ स्थितियों के लिए यह गैर-मानक SQL एक्सटेंशन है जो वास्तव में उपयोग करने योग्य है।

सबसे पहले, आपको यह सुनिश्चित करने की ज़रूरत है कि आपके पास एक अद्वितीय कुंजी बाधा है। ON DUPLICATE KEY UPDATE फ़ंक्शन केवल तभी शुरू होता है जब कोई अद्वितीय कुंजी उल्लंघन होता।

यहां आमतौर पर इस्तेमाल किया जाने वाला प्रारूप है:

 $query = "INSERT INTO $table (column1, column2, column3)
 VALUES ('value-1', 'value-2', 'value-3')
 ON DUPLICATE KEY UPDATE
 column1 = values(column1),
 column2 = values(column2),
 column3 = values(column3);"

column1 = values(column1) का अर्थ है "कॉलम 1 को उस मान के साथ अपडेट करें जो डाला गया होता यदि क्वेरी ने डुप्लिकेट कुंजी उल्लंघन नहीं मारा होता।" दूसरे शब्दों में, इसका मतलब सिर्फ कॉलम1 को अपडेट करना है, अगर इंसर्ट ने काम किया होता तो क्या होता।

इस कोड को देखते हुए, यह सही नहीं लगता कि आप उन सभी तीन कॉलमों को अपडेट कर रहे हैं जिन्हें आप सम्मिलित करने का प्रयास कर रहे हैं। किस कॉलम पर एक अद्वितीय बाधा है?

संपादित करें:ओपी से प्रश्न के अनुसार mysql सम्मिलित विवरण के 'SET' प्रारूप के आधार पर संशोधित करें।

मूल रूप से उपयोग करने के लिए ON DUPLICATE KEY UPDATE , आप सामान्य रूप से सम्मिलित विवरण लिखें, लेकिन ON DUPLICATE KEY UPDATE जोड़ें खंड अंत पर कील किया। मेरा मानना ​​है कि इसे इस तरह काम करना चाहिए:

INSERT INTO $table 
    set column1 = 'value-1',
        column2 = 'value-2',
        column3 = 'value-3'
ON DUPLICATE KEY UPDATE
    column1 = values(column1),
    column2 = values(column2),
    column3 = values(column3);

दोबारा, आपके द्वारा सम्मिलित किए जा रहे स्तंभों में से एक में एक अद्वितीय अनुक्रमणिका (या स्तंभों का संयोजन) होना चाहिए। ऐसा इसलिए हो सकता है क्योंकि उनमें से एक प्राथमिक कुंजी है या क्योंकि टेबल पर एक अद्वितीय अनुक्रमणिका है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं माइग्रेशन का उपयोग करके लार्वा में कॉलम का नाम कैसे बदल सकता हूं?

  2. एक्लिप्सलिंक और जोडा-टाइम का उपयोग कर डेटाबेस में यूटीसी में डेट-टाइम कैसे स्टोर करें?

  3. mysql:क्या हम सिस्टम टेबल पर ट्रिगर नहीं बना सकते हैं?

  4. एक MySQL डेटाबेस से कॉलम नामों सहित पंडों के डेटा फ्रेम में डेटा आयात करना

  5. MySQL Group_Concat रिपीटिंग वैल्यूज