Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ป้องกันการ Insert ซ้ำ (Duplicate) ใน MySQL

การป้องกัน Duplicate Entry ใน MySQL ด้วย UNIQUE Constraint

เพิ่ม UNIQUE CONSTRAINT บนคอลัมน์ (หรือชุดคอลัมน์) ที่ห้ามซ้ำ MySQL จะบล็อกการ INSERT/UPDATE ที่ทำให้ซ้ำ

ตัวอย่างการใช้งาน

สร้างตาราง:

mysql> create table DemoTable (Id int, Name varchar(100));

เพิ่ม UNIQUE Constraint บน (Id, Name):

mysql> alter table DemoTable add constraint id_NameUnKey UNIQUE(Id, Name);
Query OK, 0 rows affected (0.82 sec)

ทดสอบ Insert:

mysql> insert into DemoTable values(11, 'John');  -- OK
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable values(12, 'John');  -- OK (Id ต่างกัน)
Query OK, 1 row affected (0.21 sec)

mysql> insert into DemoTable values(11, 'John');  -- ERROR: Duplicate
ERROR 1062 (23000): Duplicate entry '11-John' for key 'id_NameUnKey'

ข้อมูลในตาราง (2 แถว):

+------+------+
| Id   | Name |
+------+------+
| 11   | John |
| 12   | John |
+------+------+

ประเภท Unique Constraint:

  • UNIQUE (col) - คอลัมน์เดียวไม่ซ้ำ
  • UNIQUE (col1, col2) - Composite Unique (คู่ col1+col2 ไม่ซ้ำ)
  • PRIMARY KEY - Unique + Not Null + Clustered Index (InnoDB)

จัดการ Duplicate แบบ Silent (ไม่ Error):

  • INSERT IGNORE INTO ... - ข้ามแถวซ้ำ ไม่ Error
  • INSERT ... ON DUPLICATE KEY UPDATE col = VALUES(col) - อัปเดตแทน Insert
  • REPLACE INTO ... - ลบเก่า ใส่ใหม่ (ต้องมี PK/Unique)