Wstawiasz puste ciągi, a puste ciągi nie są NULL
, aby sprawdzić NULL
błąd zrobić:
INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES (NULL, NULL, NULL, NULL);
i zobaczysz błąd. NOT NULL
sprawdza tylko wartości, które nie są NULL
.
Aby zapobiec pustym ciągom, musisz użyć wyzwalaczy
, lub sprawdź język programowania po stronie serwera, aby przekonwertować puste ciągi na NULL
przed wykonaniem INSERT
query.Przykładowy wyzwalacz dla INSERT
może wyglądać tak:(to tylko przykład)
CREATE TRIGGER avoid_empty
BEFORE INSERT ON addresses
FOR EACH ROW
BEGIN
IF street = '' THEN SET street = NULL END IF;
END;