MySQL REPLACE INTO: मौजूदा पंक्ति हटाकर नई डालना
REPLACE INTO MySQL का एक एक्सटेंशन है जो DELETE + INSERT के संयोजन की तरह काम करता है। यदि प्राइमरी की या यूनिक इंडेक्स पर डुप्लिकेट मान मिलता है, तो पुरानी पंक्ति हटाकर नई डाल देता है।
उदाहरण: REPLACE INTO का व्यवहार
टेबल बनाएं और यूनिक इंडेक्स जोड़ें:
CREATE TABLE DemoTable (
Id INT,
FirstName VARCHAR(50)
);
ALTER TABLE DemoTable ADD UNIQUE id_index(Id);
नोट: REPLACE INTO के लिए प्राइमरी की या यूनिक इंडेक्स आवश्यक है।
रिकॉर्ड डालें (डुप्लिकेट ID के साथ)
REPLACE INTO DemoTable VALUES (100, 'Chris'); -- नई पंक्ति REPLACE INTO DemoTable VALUES (101, 'David'); -- नई पंक्ति REPLACE INTO DemoTable VALUES (100, 'Bob'); -- डुप्लिकेट ID 100: पुरानी हटेगी, नई डलेगी
आउटपुट देखें:
Query OK, 1 row affected -- पहली दो के लिए Query OK, 2 rows affected -- तीसरी के लिए (1 डिलीट + 1 इन्सर्ट = 2)
अंतिम डेटा
SELECT * FROM DemoTable;
+------+-----------+ | Id | FirstName | +------+-----------+ | 100 | Bob | | 101 | David | +------+-----------+
REPLACE INTO vs INSERT ... ON DUPLICATE KEY UPDATE
| विशेषता | REPLACE INTO | INSERT ... ON DUPLICATE KEY UPDATE |
|---|---|---|
| व्यवहार | पुरानी पंक्ति हटाता है, नई डालता है | मौजूदा पंक्ति को अपडेट करता है |
| ऑटो-इन्क्रीमेंट | नया ID जनरेट हो सकता है | मौजूदा ID बरकरार रहता है |
| ट्रिगर | DELETE फिर INSERT ट्रिगर फायर होते हैं | केवल UPDATE ट्रिगर फायर होता है |
| विदेशी कुंजी | कैस्केड डिलीट ट्रिगर कर सकता है | सुरक्षित |
सिफारिश
अधिकांश मामलों में INSERT ... ON DUPLICATE KEY UPDATE बेहतर है क्योंकि यह अधिक पूर्वानुमेय है और विदेशी कुंजी संबंधों को नहीं तोड़ता।
INSERT INTO DemoTable (Id, FirstName) VALUES (100, 'Bob') ON DUPLICATE KEY UPDATE FirstName = 'Bob';