Computer >> Máy Tính >  >> Lập trình >> MySQL

MySQL trả về gì nếu tôi chèn giá trị không hợp lệ vào ENUM?

Nếu chế độ SQL nghiêm ngặt bị tắt và chúng tôi chèn giá trị không hợp lệ (không có trong danh sách các giá trị liệt kê được phép) vào ENUM thì MySQL sẽ chèn một chuỗi trống thay vì đưa ra lỗi. Nhưng nếu chế độ SQL nghiêm ngặt được bật thì MySQL sẽ xảy ra lỗi khi chèn giá trị không hợp lệ.

Ví dụ

Sau khi tắt chế độ SQL nghiêm ngặt, chúng tôi chèn chuỗi không hợp lệ vào ENUM như sau -

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)

Từ truy vấn trên, chúng ta có thể thấy rằng MySQL đã chèn một chuỗi trống vào vị trí của chuỗi không hợp lệ và không có lỗi nào được đưa ra.

Bây giờ, với sự trợ giúp của truy vấn sau, chúng ta có thể lấy số chỉ mục, là 0 và nó xác nhận rằng chuỗi được MySQL chèn vào là một chuỗi rỗng vì giá trị chỉ mục của chuỗi rỗng luôn là 0.

mysql> Select Grade + 0 from result;
+-----------+
| Grade + 0 |
+-----------+
| 0         |
+-----------+
1 row in set (0.00 sec)

Tuy nhiên, sau khi bật chế độ nghiêm ngặt của SQL, như được thực hiện trong truy vấn bên dưới, MySQL gặp lỗi khi chèn chuỗi không hợp lệ vào 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