空白(NULL
ではなく空の文字列)は必要ないと思います )テーブルで許可される値。
通常、それがCHECK
です。 の制約。あなたは次のようなことをします
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
ただし、MySQL
制約を解析しますが、強制しません。空の値を挿入することは引き続き許可されています。
これを回避するには、BEFORE INSERT
を作成します 空白の値を挿入しようとすると、シグナルをトリガーして発生させます:
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;
BEFORE UPDATE
でも同じことを行います 空白の値への更新も禁止したい場合。