sql >> Databáze >  >> RDS >> Mysql

Sloupec MySQL nastaven na NOT NULL, ale stále umožňuje hodnoty NULL

Vkládáte prázdné řetězce a prázdné řetězce nejsou NULL , pro kontrolu NULL chyba:

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

a uvidíte chybu. NOT NULL kontroluje pouze hodnoty, které nejsou NULL .

Abyste zabránili prázdnému řetězci, musíte použít spouštěče , nebo proveďte kontroly programovacího jazyka na straně serveru a převeďte prázdné řetězce na NULL před provedením INSERT dotaz. Příklad spouštěče pro INSERT může být jako:(toto je jen příklad)

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


  1. Ukázková databáze SQLite

  2. TNS-12505:TNS:listener aktuálně nezná SID uvedené v deskriptoru připojení

  3. PHP MySQL vyhledávání a řazení podle relevance

  4. Jak DAYNAME() funguje v MariaDB