我们可以将mysql中的列指定为“not empty”/“required”。要求是确保在任何记录插入时字段永远不会为空。
答案 0 :(得分:7)
我假设您不希望在表格中允许空白(空字符串,而不是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
上执行相同操作。
答案 1 :(得分:3)
使用NOT NULL
。
它会使输入必需 但是一个非空的字段你需要明确的验证脚本。
示例:
create table example(
login_name varchar(16) not null
pass_word varchar(32) not null
);
答案 2 :(得分:2)
MySQL8 现在有值约束,允许你在不使用触发器的情况下实现值限制
例如:
CREATE TABLE my_table (
myfield VARCHAR(255) NOT NULL
CONSTRAINT myfield_not_empty CHECK(
LENGTH(myfield) > 0
)
);
将确保 myfield
中的值永远不会为空
答案 3 :(得分:-1)
您可以将列定义为NOT NULL,由@Ravinder
回答除此之外,您还可以为列设置默认值。如果我们以前面的答案为例,我们可以按如下方式进行:
create table example(
login_name varchar(16) = null
pass_word varchar(32) = null
);
如果没有收到这些列的值,则默认情况下将插入NULL。