Вмъквате празни низове и празният низ не е NULL , за да проверите за NULL грешка направи:
INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES (NULL, NULL, NULL, NULL);
и ще видите грешка. NOT NULL проверява само за стойности, които не са NULL .
За да предотвратите празен низ, трябва да използвате тригери
, или направете проверките на езика за програмиране от страна на сървъра, за да конвертирате празните низове в NULL преди да извършите INSERT query. Примерен тригер за INSERT може да бъде като:(това е само пример)
CREATE TRIGGER avoid_empty
BEFORE INSERT ON addresses
FOR EACH ROW
BEGIN
IF street = '' THEN SET street = NULL END IF;
END;