Supongo que no quiere espacios en blanco (cadena vacía, a diferencia de NULL
) ) valores que se permitirán en la tabla.
Normalmente, eso es lo que un CHECK
restricción para. Haces algo como
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
Sin embargo, MySQL
analiza la restricción pero no la aplica. Aún puede insertar valores vacíos.
Para evitar eso, cree un BEFORE INSERT
disparar y generar una señal en un intento de insertar un valor en blanco:
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;
Haz lo mismo en BEFORE UPDATE
si también desea prohibir las actualizaciones de un valor en blanco.