sql >> Base de Datos >  >> RDS >> Mysql

Columna MySQL establecida en NOT NULL pero aún permitiendo valores NULL

Está insertando cadenas vacías y las cadenas vacías no son NULL , para buscar NULL error hacer:

INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES (NULL, NULL, NULL, NULL);

y verás el error. El NOT NULL comprueba solo los valores que no son NULL .

Para evitar una cadena vacía, debe usar triggers , o haga las comprobaciones en el lenguaje de programación del lado del servidor para convertir cadenas vacías a NULL antes de realizar INSERT query.Un disparador de ejemplo para INSERT puede ser como:(esto es solo un ejemplo)

CREATE TRIGGER avoid_empty
    BEFORE INSERT ON addresses
        FOR EACH ROW
        BEGIN
        IF street = '' THEN SET street = NULL END IF;
END;