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;