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

Omezení sloupce Mysql není prázdné / povinné

Předpokládám, že nechcete prázdné (prázdný řetězec, na rozdíl od NULL ) hodnoty, které mají být povoleny také v tabulce.

Normálně to je to, co CHECK omezení pro. Děláte něco jako

CREATE TABLE
        mytable
        (
        myfield NOT NULL VARCHAR(200),
        CHECK(myfield > '')
        )

Nicméně MySQL analyzuje omezení, ale nevynucuje je. Stále můžete vkládat prázdné hodnoty.

Chcete-li to obejít, vytvořte BEFORE INSERT spustit a zvýšit signál při pokusu o vložení prázdné hodnoty:

CREATE TRIGGER
        tr_mytable_bi
BEFORE INSERT
ON      mytable
FOR EACH ROW
BEGIN
        IF NEW.myfield = '' THEN
                SIGNAL SQLSTATE '45001' SET MESSAGE_TEXT = 'Blank value on mytable.myfield';
        END IF;
END;

Udělejte totéž na BEFORE UPDATE pokud chcete zakázat aktualizace i na prázdnou hodnotu.



  1. Výběr odlišné kombinace 2 sloupců v mysql

  2. Ovládací prvek TreeView s podformuláři

  3. Zdroj nenalezen Soubor JAR mysql-connector-java-5.1.20-bin.jar nemá žádnou zdrojovou přílohu

  4. Příkaz CASE v klauzuli WHERE SQL