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

ใช้ UNIQUE Constraint ใน MySQL เพื่อป้องกันการ Insert ค่าซ้ำ

การประกาศ UNIQUE Constraint เพื่อป้องกันข้อมูลซ้ำ

คีย์เวิร์ด UNIQUE ในคำสั่ง CREATE TABLE ใช้บังคับให้คอลัมน์นั้นไม่สามารถมีค่าซ้ำกันได้ (ยกเว้น NULL ซึ่งอาจมีได้หลายค่า ขึ้นกับ Engine)

ไวยากรณ์การประกาศ UNIQUE

CREATE TABLE yourTableName (
    yourColumnName1 dataType,
    yourColumnName2 dataType,
    UNIQUE(yourColumnName1),
    UNIQUE(yourColumnName2)
);

ตัวอย่างสร้างตารางพร้อม UNIQUE 2 คอลัมน์

mysql> CREATE TABLE DemoTable (
    Value INT,
    Value2 INT,
    UNIQUE(Value),
    UNIQUE(Value2)
);
Query OK, 0 rows affected (13.98 sec)

ทดสอบ Insert ข้อมูลซ้ำ

mysql> INSERT INTO DemoTable VALUES(10,20);  -- OK
Query OK, 1 row affected (0.32 sec)

mysql> INSERT INTO DemoTable VALUES(10,30);  -- ERROR: Duplicate '10' for key 'Value'
ERROR 1062 (23000): Duplicate entry '10' for key 'Value'

mysql> INSERT INTO DemoTable VALUES(40,20);  -- ERROR: Duplicate '20' for key 'Value2'
ERROR 1062 (23000): Duplicate entry '20' for key 'Value2'

mysql> INSERT INTO DemoTable VALUES(60,70);  -- OK
Query OK, 1 row affected (1.37 sec)

แสดงข้อมูลที่ Insert สำเร็จ

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+-------+--------+
| Value | Value2 |
+-------+--------+
| 10    | 20     |
| 60    | 70     |
+-------+--------+
2 rows in set (0.00 sec)

คำอธิบาย

  • UNIQUE(Value) : ไม่อนุญาตให้ค่า Value ซ้ำ
  • UNIQUE(Value2) : ไม่อนุญาตให้ค่า Value2 ซ้ำ
  • พยายาม Insert (10,30) ล้มเหลวเพราะ Value=10 มีอยู่แล้ว
  • พยายาม Insert (40,20) ล้มเหลวเพราะ Value2=20 มีอยู่แล้ว
  • UNIQUE สร้าง Index อัตโนมัติ ช่วยให้ค้นหาเร็วขึ้น