Vkládáte prázdné řetězce a prázdné řetězce nejsou NULL
, pro kontrolu NULL
chyba:
INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES (NULL, NULL, NULL, NULL);
a uvidíte chybu. NOT NULL
kontroluje pouze hodnoty, které nejsou NULL
.
Abyste zabránili prázdnému řetězci, musíte použít spouštěče
, nebo proveďte kontroly programovacího jazyka na straně serveru a převeďte prázdné řetězce na NULL
před provedením INSERT
dotaz. Příklad spouštěče pro INSERT
může být jako:(toto je jen příklad)
CREATE TRIGGER avoid_empty
BEFORE INSERT ON addresses
FOR EACH ROW
BEGIN
IF street = '' THEN SET street = NULL END IF;
END;