MySQL nevynucuje kontrolní omezení.
Toto je dobře zdokumentovaná odchylka od standardu SQL. (Ačkoli to nezasvěcené neočekávaly.)
Pokud potřebujete, aby databáze MySQL vynutila "kontrolní omezení", vynucení musí být zakódováno do BEFORE INSERT
a BEFORE UPDATE
spoušť.
Tato poznámka:
je pohřben v referenční příručce MySQL pod CREATE TABLE
syntaxe.
Odkaz:https://dev.mysql.com/doc /refman/5.5/cs/create-table.html
UPOZORNĚNÍ O ENUM
ENUM
neomezuje vkládání "neplatných" hodnot; neplatná hodnota se převede na řetězec nulové délky, vydá se varování, ale nejedná se o chybu.
Ukázka:
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