Je suppose que vous ne voulez pas de blanc (chaîne vide, par opposition à NULL
) valeurs à autoriser dans le tableau.
Normalement, c'est ce qu'un CHECK
contrainte pour. Vous faites quelque chose comme
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
Cependant, MySQL
analyse la contrainte mais ne l'applique pas. Vous êtes toujours autorisé à insérer des valeurs vides.
Pour contourner ce problème, créez un BEFORE INSERT
déclencher et émettre un signal lors d'une tentative d'insertion d'une valeur vide :
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;
Faites de même sur BEFORE UPDATE
si vous souhaitez également interdire les mises à jour d'une valeur vide.