Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Coluna MySQL definida como NOT NULL, mas ainda permitindo valores NULL


Você está inserindo strings vazias e strings vazias não são NULL , para verificar se há NULL erro faça:
INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES (NULL, NULL, NULL, NULL);

e você verá o erro. O NOT NULL verifica apenas valores que não sejam NULL .

Para evitar uma string vazia, você deve usar triggers , ou faça as verificações na linguagem de programação do lado do servidor para converter strings vazias em NULL antes de executar INSERT query.Um exemplo de gatilho para INSERT pode ser como:(este é apenas um exemplo)
CREATE TRIGGER avoid_empty
    BEFORE INSERT ON addresses
        FOR EACH ROW
        BEGIN
        IF street = '' THEN SET street = NULL END IF;
END;