Jag antar att du inte vill ha tom (tom sträng, i motsats till NULL
) värden som ska tillåtas i tabellen heller.
Normalt är det vad en CHECK
begränsning för. Du gör något liknande
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
Men MySQL
analyserar begränsningen men upprätthåller den inte. Du har fortfarande rätt att infoga tomma värden.
För att kringgå det, skapa en BEFORE INSERT
utlösa och höja en signal vid ett försök att infoga ett tomt värde:
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;
Gör samma sak på BEFORE UPDATE
om du vill förbjuda uppdateringar till ett tomt värde också.