การประกาศ 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 อัตโนมัติ ช่วยให้ค้นหาเร็วขึ้น