Mysql
 sql >> Database >  >> RDS >> Mysql

Colonna MySQL impostata su NOT NULL ma che consente comunque valori NULL

Stai inserendo stringhe vuote e le stringhe vuote non sono NULL , per verificare la presenza di NULL errore fare:

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

e vedrai l'errore. Il NOT NULL controlla solo i valori che non sono NULL .

Per evitare stringhe vuote devi usare trigger oppure esegui i controlli sul linguaggio di programmazione lato server per convertire le stringhe vuote in NULL prima di eseguire INSERT query. Un esempio di trigger per INSERT potrebbe essere come:(questo è solo un esempio)

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