এজন্য MySQL ডুয়াল টেবিল ব্যবহার করে ইনসার্ট করতে পারেন। কনসেপ্ট বুঝতে একটি টেবিল তৈরি করি:
mysql> CREATE TABLE ConditionalInsertDemo (
-> UserId INT,
-> TotalUser INT,
-> NumberOfItems INT
-> ); Query OK, 0 rows affected (0.58 sec)
ইনসার্ট কমান্ড দিয়ে কিছু রেকর্ড যোগ করি:
mysql> INSERT INTO ConditionalInsertDemo VALUES(101,560,780); Query OK, 1 row affected (0.19 sec) mysql> INSERT INTO ConditionalInsertDemo VALUES(102,660,890); Query OK, 1 row affected (0.20 sec) mysql> INSERT INTO ConditionalInsertDemo VALUES(103,450,50); Query OK, 1 row affected (0.15 sec)
সিলেক্ট স্টেটমেন্ট দিয়ে সব রেকর্ড দেখি:
mysql> SELECT * FROM ConditionalInsertDemo;
আউটপুট
+--------+-----------+---------------+ | UserId | TotalUser | NumberOfItems | +--------+-----------+---------------+ | 101 | 560 | 780 | | 102 | 660 | 890 | | 103 | 450 | 50 | +--------+-----------+---------------+ 3 rows in set (0.00 sec)
এখন টেবিলে ৩টি রেকর্ড আছে। ডুয়াল টেবিলের সাহায্যে কন্ডিশনাল ইনসার্ট করি। ক্যোয়ারিটি টেবিলে রেকর্ড ইনসার্ট করবে যখন UserId=104 এবং NumberOfItems=3500 ইতিমধ্যে টেবিলে না থাকে:
mysql> INSERT INTO ConditionalInsertDemo(UserId,TotalUser,NumberOfItems)
-> SELECT 104,900,3500 FROM DUAL
-> WHERE NOT EXISTS (SELECT * FROM ConditionalInsertDemo
-> WHERE UserId=104 AND NumberOfItems=3500); Query OK, 1 row affected (0.18 sec) Records: 1 Duplicates: 0 Warnings: 0
এখন চেক করি রেকর্ড ইনসার্ট হয়েছে কিনা:
mysql> SELECT * FROM ConditionalInsertDemo;
আউটপুট
+--------+-----------+---------------+ | UserId | TotalUser | NumberOfItems | +--------+-----------+---------------+ | 101 | 560 | 780 | | 102 | 660 | 890 | | 103 | 450 | 50 | | 104 | 900 | 3500 | +--------+-----------+---------------+ 4 rows in set (0.00 sec)