MySQL-এ ডুপ্লিকেট রেকর্ড হ্যান্ডেল করার সবচেয়ে দক্ষ উপায় হলো INSERT ON DUPLICATE KEY UPDATE ব্যবহার করা। এটি ডুপ্লিকেট কী পাওয়া গেলে নতুন রো ইনসার্ট না করে এক্সিস্টিং রো আপডেট করে, ফলে এরর এড়ানো যায়।
উদাহরণ
১. ইউনিক কনস্ট্রেইন্ট সহ টেবিল তৈরি করুন
mysql> CREATE TABLE DemoTable (
-> Id INT,
-> Name VARCHAR(20),
-> UNIQUE(Id, Name)
-> );
২. ডেটা ইনসার্ট করুন (ডুপ্লিকেট হলে আপডেট হবে)
mysql> INSERT INTO DemoTable VALUES(101, 'Chris') ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';
mysql> INSERT INTO DemoTable VALUES(102, 'Mike') ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';
mysql> INSERT INTO DemoTable VALUES(101, 'Chris') ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';
নোট: তৃতীয় কোয়েরি ডুপ্লিকেট কী (101, 'Chris') পাওয়ায় এক্সিস্টিং রো আপডেট করেছে।
৩. রেকর্ড দেখুন
mysql> SELECT * FROM DemoTable;
আউটপুট:
+-------+--------+
| Id | Name |
+-------+--------+
| 102 | Mike |
| 10001 | Robert |
+-------+--------+
ব্যাখ্যা: প্রথম দুটি ইনসার্ট সফল হয়েছে। তৃতীয়টি ডুপ্লিকেট কী (101, 'Chris') পাওয়ায় ON DUPLICATE KEY UPDATE ক্লজটি এক্সিস্টিং রোকে (Id=10001, Name='Robert') আপডেট করেছে। ফলে টেবিলে মোট ২টি রো রইল। এই পদ্ধতিটি `REPLACE INTO` বা `INSERT IGNORE` চেয়ে বেশি নিয়ন্ত্রণ দেয়।