ถ้าตั้งเงื่อนไข UNIQUE แล้วพยายาม INSERT หลายแถวพร้อมกันซึ่งมีค่าซ้ำในคอลัมน์ UNIQUE จะเกิด Error และ ไม่มีแถวใดถูกเพิ่มเลย (All-or-nothing)
ตัวอย่างการใช้งาน
สร้างตารางมี UNIQUE constraint:
mysql> create table DemoTable1585 (
-> StudentId int,
-> StudentMarks int,
-> UNIQUE(StudentId)
-> );
Query OK, 0 rows affected (1.02 sec)
พยายาม INSERT 4 แถว พร้อมกันมี StudentId=3 ซ้ำ:
mysql> insert into DemoTable1585 values(1,87),(2,98),(3,91),(3,48); ERROR 1062 (23000): Duplicate entry '3' for key 'StudentId'
ตรวจสอบข้อมูลในตาราง:
mysql> select * from DemoTable1585;
Empty set (0.00 sec)
คำอธิบาย
MySQL ใช้ All-or-nothing สำหรับ multi-row INSERT: หากมีแถวใดผิดเงื่อนไข UNIQUE ทั้งชุดจะถูกยกเลิก (Rollback) ไม่มีแถวเดียวถูกบันทึก ควรตรวจสอบข้อมูลก่อน INSERT หรือใช้ INSERT IGNORE / ON DUPLICATE KEY UPDATE ตามความต้องการ