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

MySql - डुप्लीकेट कुंजी डालने पर

ON DUPLICATE KEY UPDATE . के साथ , आप किसी अन्य तालिका में सम्मिलित नहीं कर सकते - न ही कोई वैकल्पिक कार्य उपलब्ध है।

दो कस्टम/वैकल्पिक तरीकों से आप इसे पूरा कर सकते हैं:

  1. stored procedure का उपयोग करना जैसा कि इस प्रश्न के स्वीकृत उत्तर में उल्लिखित है:MySQL ON DUPLICATE KEY ऑडिट या लॉग टेबल में डालें

  2. एक trigger बनाना जिसने हर INSERT . को लॉग किया आपकी तालिका के लिए किसी अन्य तालिका में और किसी भी डुप्लिकेट के लिए "लॉग" से भरी तालिका को क्वेरी करना।

कुछ ऐसा ही काम करना चाहिए:

CREATE TABLE insert_logs (
    id int not null
);

delimiter |
CREATE TRIGGER insert_logs_trigger BEFORE INSERT ON your_table
    FOR EACH ROW BEGIN
        INSERT INTO insert_logs SET id = NEW.id;
    END;
|

तालिका में डुप्लिकेट की सूची प्राप्त करने के लिए, आप हमें कर सकते हैं:

SELECT id FROM insert_logs HAVING COUNT(id) > 1 GROUP BY id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि को कैसे ठीक करें:प्लगइन 'एरिया' के कारण Xampp पर MySQL अप्रत्याशित रूप से बंद हो गया

  2. क्या मैं सशर्त रूप से एक विशिष्टता बाधा लागू कर सकता हूं?

  3. इस प्रश्न को वाक्पटु के लिए परिवर्तित करें

  4. MySQL संचयी योग तिथि के अनुसार समूहीकृत

  5. क्या MySQL क्लॉज द्वारा SELECT और HAVING/GROUP BY के बीच सामान्य उप-अभिव्यक्तियों को समाप्त करता है