Ik neem aan dat je geen blanco wilt (lege tekenreeks, in tegenstelling tot NULL
) waarden zijn ook toegestaan in de tabel.
Normaal gesproken is dat wat een CHECK
beperking voor. Je doet zoiets als
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
Echter, MySQL
parseert de beperking, maar handhaaft deze niet. Je mag nog steeds lege waarden invoegen.
Om dat te omzeilen, maakt u een BEFORE INSERT
trigger en verhoog een signaal bij een poging om een lege waarde in te voegen:
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;
Doe hetzelfde op BEFORE UPDATE
als u ook updates naar een lege waarde wilt verbieden.