MySQL håndhæver ikke kontrolbegrænsninger.
Dette er en veldokumenteret afvigelse fra SQL-standarden. (Selvom det var uventet af den uindviede.)
Hvis du har brug for MySQL-databasen til at gennemtvinge en "check constraint", skal håndhævelsen kodes til en BEFORE INSERT
og en BEFORE UPDATE
udløser.
Denne note:
er begravet i MySQL Reference Manual under CREATE TABLE
syntaks.
Reference:https://dev.mysql.com/doc /refman/5.5/da/create-table.html
ADVARSEL OM ENUM
En ENUM
begrænser ikke "ugyldige" værdier i at blive indsat; en ugyldig værdi oversættes til en streng på nul, en advarsel udsendes, men det er ikke en fejl.
Demonstration:
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