Mysql
 sql >> Base de données >  >> RDS >> Mysql

La colonne MySQL est définie sur NOT NULL mais autorise toujours les valeurs NULL

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;