Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Spalte auf NOT NULL gesetzt, erlaubt aber weiterhin NULL-Werte

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;