Presumo che tu non voglia vuoto (stringa vuota, al contrario di NULL
) valori da consentire anche nella tabella.
Normalmente, questo è ciò che un CHECK
vincolo per. Fai qualcosa come
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
Tuttavia, MySQL
analizza il vincolo ma non lo applica. Puoi comunque inserire valori vuoti.
Per aggirare il problema, crea un BEFORE INSERT
attiva e genera un segnale nel tentativo di inserire un valore vuoto:
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;
Fai lo stesso su BEFORE UPDATE
se vuoi vietare anche gli aggiornamenti a un valore vuoto.