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

MySQL ใดส่งคืนหากฉันใส่ค่าที่ไม่ถูกต้องลงใน ENUM


หากโหมด SQL เข้มงวดถูกปิดใช้งาน และเราใส่ค่าที่ไม่ถูกต้อง (ซึ่งไม่อยู่ในรายการค่าการแจงนับที่อนุญาต) ลงใน 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