MySQL-এ ON DUPLICATE KEY UPDATE ক্লজ ব্যবহার করে একই কোয়েরিতে ইনসার্ট এবং আপডেট করা যায়। এটি কাজ করে যখন PRIMARY KEY বা UNIQUE KEY ডুপ্লিকেট হয়।
উদাহরণ
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL PRIMARY KEY,
Number INT
);
Query OK, 0 rows affected (0.83 sec)
রেকর্ড ইনসার্ট (ডুপ্লিকেট হলে আপডেট)
mysql> INSERT INTO DemoTable VALUES (1, 190) ON DUPLICATE KEY UPDATE Number = Number + 10; Query OK, 1 row affected (0.19 sec) mysql> INSERT INTO DemoTable VALUES (2, 130) ON DUPLICATE KEY UPDATE Number = Number + 10; Query OK, 1 row affected (0.19 sec) mysql> INSERT INTO DemoTable VALUES (1, 190) ON DUPLICATE KEY UPDATE Number = Number + 10; Query OK, 2 rows affected (0.14 sec) -- আপডেট হয়েছে mysql> INSERT INTO DemoTable VALUES (2, 130) ON DUPLICATE KEY UPDATE Number = Number + 10; Query OK, 2 rows affected (0.17 sec) -- আপডেট হয়েছে
ফলাফল
mysql> SELECT * FROM DemoTable;
+----+--------+ | Id | Number | +----+--------+ | 1 | 200 | -- 190 + 10 | 2 | 140 | -- 130 + 10 +----+--------+ 2 rows in set (0.00 sec)
কীভাবে কাজ করে
- নতুন
Idহলে →INSERTহয় - বিদ্যমান
Idহলে →UPDATEহয় (এখানেNumber = Number + 10) - এফেক্টেড রো: ইনসার্টে ১, আপডেটে ২
ব্যবহার: আপসার্ট (UPSERT) অপারেশনের জন্য আদর্শ — লগইন কাউন্ট, ভিজিট ট্র্যাকিং, ইনভেন্টরি আপডেট ইত্যাদিতে।