Sie fügen leere Zeichenfolgen ein, und leere Zeichenfolgen sind nicht NULL , um auf NULL zu prüfen Fehler machen:
INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES (NULL, NULL, NULL, NULL);
und Sie werden Fehler sehen. Der NOT NULL prüft nur auf Werte, die nicht NULL sind .
Um entweder leere Strings zu verhindern, müssen Sie Trigger
verwenden , oder führen Sie die Überprüfungen in der serverseitigen Programmiersprache durch, um leere Zeichenfolgen in NULL zu konvertieren bevor Sie INSERT ausführen query.Ein Beispieltrigger für INSERT kann so aussehen:(dies ist nur ein Beispiel)
CREATE TRIGGER avoid_empty
BEFORE INSERT ON addresses
FOR EACH ROW
BEGIN
IF street = '' THEN SET street = NULL END IF;
END;