Zakładam, że nie chcesz pustego (pustego ciągu, w przeciwieństwie do NULL
) wartości, które mają być dozwolone w tabeli.
Zwykle właśnie to jest CHECK
ograniczenie dla. Robisz coś takiego
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
Jednak MySQL
analizuje ograniczenie, ale go nie wymusza. Nadal możesz wstawiać puste wartości.
Aby obejść ten problem, utwórz BEFORE INSERT
wyzwalanie i podnoszenie sygnału przy próbie wstawienia pustej wartości:
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;
Zrób to samo na BEFORE UPDATE
jeśli chcesz zabronić również aktualizacji pustej wartości.