কম্পিউটার টিউটোরিয়াল

MySQL-এ একই কোয়েরিতে INSERT এবং UPDATE (ON DUPLICATE KEY UPDATE)

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) অপারেশনের জন্য আদর্শ — লগইন কাউন্ট, ভিজিট ট্র্যাকিং, ইনভেন্টরি আপডেট ইত্যাদিতে।

  1. MySQL-এ MAX(col)+1 একই টেবিলে ইনসার্ট করা

  2. MySQL-এ INSERT… ON DUPLICATE KEY UPDATE বাস্তবায়ন

  3. MySQL-এ ফলাফল সেটকে নির্দিষ্ট ক্রমে সাজানো

  4. MySQL-এ SELECT কুয়েরি দিয়ে INSERT করা (INSERT ... SELECT)