เพื่อป้องกันการแทรกข้อมูลซ้ำ ให้ใช้ UNIQUE INDEX บนคอลัมน์ที่ต้องการ:
ALTER TABLE yourTableName ADD UNIQUE INDEX(yourColumnName1, yourColumnName2, ... N);
ตัวอย่างการใช้งาน
1. สร้างตาราง
mysql> create table DemoTable
-> (
-> Value1 int,
-> Value2 int
-> );
Query OK, 0 rows affected (0.55 sec)
2. เพิ่ม Unique Index
mysql> alter table DemoTable ADD UNIQUE INDEX(Value1, Value2); Query OK, 0 rows affected (0.54 sec) Records: 0 Duplicates: 0 Warnings: 0
3. แทรกข้อมูลด้วย INSERT IGNORE
ใช้คำสั่ง INSERT IGNORE แทน INSERT ธรรมดา หากข้อมูลไม่ซ้ำ จะถูกแทรกตามปกติ หากซ้ำ จะถูกละเว้นโดยไม่แสดงข้อผิดพลาด
mysql> insert ignore into DemoTable values(10,20); Query OK, 1 row affected (0.14 sec) mysql> insert ignore into DemoTable values(10,20); Query OK, 0 rows affected, 1 warning (0.10 sec)
4. แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
ผลลัพธ์
+--------+--------+ | Value1 | Value2 | +--------+--------+ | 10 | 20 | +--------+--------+ 1 row in set (0.00 sec)
คำแนะนำเพิ่มเติม: สามารถใช้ ON DUPLICATE KEY UPDATE ได้อีกวิธีหนึ่ง หากต้องการอัปเดตค่าอื่นเมื่อพบข้อมูลซ้ำ