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;