Ich nehme an, Sie wollen kein Leerzeichen (leere Zeichenfolge im Gegensatz zu NULL
) Werte in der Tabelle erlaubt sein.
Normalerweise ist das was für ein CHECK
Einschränkung für. Sie tun so etwas wie
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
Allerdings MySQL
analysiert die Einschränkung, erzwingt sie jedoch nicht. Sie können weiterhin leere Werte einfügen.
Um dies zu umgehen, erstellen Sie einen BEFORE INSERT
auslösen und ein Signal auslösen, wenn versucht wird, einen Leerwert einzufügen:
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;
Machen Sie dasselbe mit BEFORE UPDATE
wenn Sie auch Aktualisierungen auf einen leeren Wert verbieten möchten.