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;