Vous insérez des chaînes vides et les chaînes vides ne sont pas NULL , pour vérifier NULL erreur faire :
INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES (NULL, NULL, NULL, NULL);
et vous verrez une erreur. Le NOT NULL vérifie uniquement les valeurs qui ne sont pas NULL .
Pour éviter une chaîne vide, vous devez soit utiliser triggers
, ou faites les vérifications sur le langage de programmation côté serveur pour convertir les chaînes vides en NULL avant d'effectuer INSERT query.Un exemple de déclencheur pour INSERT peut ressembler à :(ce n'est qu'un exemple)
CREATE TRIGGER avoid_empty
BEFORE INSERT ON addresses
FOR EACH ROW
BEGIN
IF street = '' THEN SET street = NULL END IF;
END;