MySQL-এ INSERT IGNORE ব্যবহার করলে ডুপ্লিকেট এরি স্লেন্তলি স্কিপ হয়। ডুপ্লিকেট এরি বাধ্যতামূলক করতে চাইলে UNIQUE INDEX তৈরি করুন এবং IGNORE ব্যবহার করবেন না।
টেবিল তৈরি
mysql> CREATE TABLE DemoTable (FirstName VARCHAR(100)); Query OK, 0 rows affected (0.58 sec)
UNIQUE INDEX যোগ করা
mysql> ALTER TABLE DemoTable ADD UNIQUE INDEX (FirstName); Query OK, 0 rows affected (0.50 sec) Records: 0 Duplicates: 0 Warnings: 0
MySQL ডক্স অনুযায়ী: "Without IGNORE, a row that duplicates an existing UNIQUE index or PRIMARY KEY value in the table causes a duplicate-key error and the statement is aborted."
ডেটা ইনসার্ট (IGNORE ছাড়া - ডুপ্লিকেটে এরর)
mysql> INSERT INTO DemoTable VALUES ('Chris');
Query OK, 1 row affected (0.32 sec)
mysql> INSERT INTO DemoTable VALUES ('Robert');
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO DemoTable VALUES ('David');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES ('Robert');
ERROR 1062 (23000): Duplicate entry 'Robert' for key 'FirstName'
mysql> INSERT INTO DemoTable VALUES ('Chris');
ERROR 1062 (23000): Duplicate entry 'Chris' for key 'FirstName'
mysql> INSERT INTO DemoTable VALUES ('Sam');
Query OK, 1 row affected (0.12 sec)
রেকর্ড দেখানো (ডুপ্লিকেট ইনসার্ট হয়নি)
mysql> SELECT * FROM DemoTable;
আউটপুট:
+-----------+ | FirstName | +-----------+ | Chris | | David | | Robert | | Sam | +-----------+ 4 rows in set (0.00 sec)
INSERT IGNORE ব্যবহার করলে কী হয়?
INSERT IGNORE INTO DemoTable VALUES ('Robert'); -- এরর নেই, স্লেন্তলি স্কিপ, Warnings: 1
ON DUPLICATE KEY UPDATE (আপসার্ট)
INSERT INTO DemoTable VALUES ('Robert')
ON DUPLICATE KEY UPDATE FirstName = 'Robert_Updated';
সামারি
| স্টেটমেন্ট | ডুপ্লিকেট হলে | রিটার্ন |
|---|---|---|
| INSERT | ERROR 1062, অ্যাবোর্ট | এরি |
| INSERT IGNORE | স্লেন্তলি স্কিপ | OK, Warning |
| INSERT ... ON DUPLICATE KEY UPDATE | আপডেট করে | OK (affected rows: 2) |
| REPLACE INTO | পুরোনো ডিলিট করে নতুন ইনসার্ট | OK (affected rows: 2) |