MySQL không thực thi các ràng buộc kiểm tra.
Đây là một sai lệch được ghi nhận rõ ràng so với tiêu chuẩn SQL. (Mặc dù nó không mong đợi bởi những người chưa bắt đầu.)
Nếu bạn cần cơ sở dữ liệu MySQL để thực thi "ràng buộc kiểm tra", thì việc thực thi phải được mã hóa thành BEFORE INSERT
và BEFORE UPDATE
kích hoạt.
Lưu ý này:
được chôn trong MySQL Reference Manual, trong CREATE TABLE
cú pháp.
Tham khảo: https://dev.mysql.com/doc /refman/5.5/en/create-table.html
CẢNH BÁO VỀ ENUM
ENUM
không hạn chế các giá trị "không hợp lệ" được chèn vào; một giá trị không hợp lệ được chuyển thành một chuỗi có độ dài bằng 0, một cảnh báo được đưa ra, nhưng đó không phải là lỗi.
Trình diễn:
CREATE TABLE foo (gen ENUM('M','F'))
INSERT INTO foo (gen) VALUES ('x')
-- Warning Code : 1265
-- Data truncated for column 'gen' at row 1
SELECT gen, CHAR_LENGTH(gen) FROM foo;
-- gen CHAR_LENGTH(gen)
-- --- ----------------
-- 0