Saya berasumsi Anda tidak ingin kosong (string kosong, sebagai lawan dari NULL
) nilai yang akan diizinkan dalam tabel juga.
Biasanya, itulah yang CHECK
kendala untuk. Anda melakukan sesuatu seperti
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
Namun, MySQL
mem-parsing kendala tetapi tidak menegakkannya. Anda masih diperbolehkan memasukkan nilai kosong.
Untuk mengatasinya, buat BEFORE INSERT
memicu dan menaikkan sinyal pada upaya untuk memasukkan nilai kosong:
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;
Lakukan hal yang sama pada BEFORE UPDATE
jika Anda ingin melarang pembaruan ke nilai kosong juga.