Nếu chế độ SQL strict bị vô hiệu hóa và chúng ta chèn giá trị không hợp lệ (không nằm trong danh sách giá trị liệt kê cho phép) vào ENUM, MySQL sẽ chèn chuỗi rỗng thay vì ném lỗi. Nhưng nếu chế độ SQL strict được kích hoạt, MySQL ném lỗi khi chèn giá trị không hợp lệ.
Ví dụ
Sau khi vô hiệu hóa chế độ SQL strict, 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, ta thấy MySQL chèn chuỗi rỗng thay vì chuỗi không hợp lệ và không ném lỗi.
Bây giờ, với truy vấn sau, ta lấy số chỉ mục, là 0, xác nhận chuỗi được chèn bởi MySQL là 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)
Nhưng sau khi bật chế độ SQL strict như truy vấn dưới, MySQL ném 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