หากโหมด SQL สтриงค์ (strict SQL mode) ปิดอยู่ และเราแทรกค่าที่ไม่ถูกต้อง (ซึ่งไม่อยู่ในรายการค่าที่อนุญาตของ ENUM) ลงใน ENUM แล้ว MySQL จะแทรกสตริงว่างแทนการโยนข้อผิดพลาด แต่หากโหมด SQL สтриงค์เปิดอยู่ MySQL จะโยนข้อผิดพลาดเมื่อแทรกค่าไม่ถูกต้อง
ตัวอย่าง
หลังจากปิดโหมด SQL สтриงค์ เราแทรกสตริงที่ไม่ถูกต้องลงใน ENUM ดังนี้:
mysql> INSERT INTO result(id, name, grade) VALUES (100, 'Gaurav', 'abcd'); Query OK, 1 row affected, 1 warning (0.03 sec) mysql> SELECT * FROM result; +-----+--------+-------+ | Id | Name | Grade | +-----+--------+-------+ | 100 | Gaurav | | +-----+--------+-------+ 1 row in set (0.00 sec)
จากคิวรีข้างต้น MySQL แทรกสตริงว่างแทนสตริงที่ไม่ถูกต้อง และไม่มีข้อผิดพลาด
เราสามารถได้หมายเลขดัชนีซึ่งคือ 0 และยืนยันว่าสตริงที่ MySQL แทรกคือสตริงว่าง เพราะค่าดัชนีของสตริงว่างคือ 0 เสมอ:
mysql> SELECT Grade + 0 FROM result; +-----------+ | Grade + 0 | +-----------+ | 0 | +-----------+ 1 row in set (0.00 sec)
แต่หลังจากเปิดโหมด SQL สтриงค์ ตามคิวรีด้านล่าง MySQL โยนข้อผิดพลาดเมื่อแทรกสตริงที่ไม่ถูกต้องลงใน ENUM:
mysql> SET SQL_MODE = 'Traditional'; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO result(id, name, grade) VALUES (101, 'Saurabh', 'abcd'); ERROR 1265 (01000): Data truncated for column 'Grade' at row 1