Jeg antager, at du ikke vil have tom (tom streng i modsætning til NULL
) værdier, der skal tillades i tabellen enten.
Normalt er det, hvad en CHECK
begrænsning for. Du gør noget som
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
Dog MySQL
analyserer begrænsningen, men håndhæver den ikke. Du har stadig lov til at indsætte tomme værdier.
For at omgå det skal du oprette en BEFORE INSERT
udløse og hæve et signal ved et forsøg på at indsætte en tom værdi:
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 det samme på BEFORE UPDATE
hvis du også vil forbyde opdateringer til en tom værdi.