@johnthexii द्वारा प्रदान किए गए लिंक का उपयोग करके यहां एक दृष्टिकोण दिया गया है (डेमो ) (यह सिर्फ MySQL का उपयोग कर रहा है, इसलिए यह पायथन विशिष्ट नहीं है)
CREATE TABLE UserNames (`username` varchar(35) unique, `duplicates` int);
INSERT INTO UserNames (`username`, `duplicates`)
VALUES ('stackoverflow.com', 0);
INSERT INTO UserNames (`username`, `duplicates`)
VALUES ('dba.stackexchange.com/', 0)
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1;
INSERT INTO UserNames (`username`, `duplicates`)
VALUES ('stackoverflow.com', 0)
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1;
यहाँ क्या हो रहा है इसका एक विश्लेषण दिया गया है:username
फ़ील्ड को अद्वितीय के रूप में चिह्नित किया गया है, इसलिए मौजूदा उपयोगकर्ता नाम के साथ रिकॉर्ड डालने का कोई भी प्रयास डेटाबेस स्तर पर विफल हो जाएगा। फिर INSERT
स्टेटमेंट में एक अतिरिक्त है
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
यह MySQL को बताता है कि INSERT को विफल करने के बजाय केवल duplicates
कॉलम और एक से वृद्धि। जब आप तीन INSERT कमांड चलाते हैं तो आपको दो रिकॉर्ड दिखाई देंगे, stackoverflow.com
एक duplicates
है 1 का मान, जबकि dba.stackexchange.com
एक duplicates
है 0 का मान।