我们可以将mysql中的一列指定为“非空”/“必需”吗?要求是确保该字段在任何记录插入时都不会保持空白。
我假设你不想要空白(空字符串,而不是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
如果您也想禁止更新空白值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)