Du infogar tomma strängar och tomma strängar är inte NULL , för att leta efter NULL fel gör:
INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES (NULL, NULL, NULL, NULL);
och du kommer att se fel. NOT NULL söker endast efter värden som inte är NULL .
För att förhindra tom sträng antingen måste du använda triggers
, eller gör kontrollerna på serversidans programmeringsspråk för att konvertera tomma strängar till NULL innan du utför INSERT query. Ett exempel på trigger för INSERT kan vara som:(detta är bara ett exempel)
CREATE TRIGGER avoid_empty
BEFORE INSERT ON addresses
FOR EACH ROW
BEGIN
IF street = '' THEN SET street = NULL END IF;
END;