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.