Mysql列约束为";不为空";/&引用;“必需”;
我们可以在mysql中指定一列为“notempty”/“required”吗。要求是确保在任何记录插入时,字段都不会保持空白。使用Mysql列约束为";不为空";/&引用;“必需”;,mysql,Mysql,我们可以在mysql中指定一列为“notempty”/“required”吗。要求是确保在任何记录插入时,字段都不会保持空白。使用非空 它导致需要输入。 但若字段不为空,则需要显式验证脚本 例如: create table example( login_name varchar(16) not null pass_word varchar(32) not null ); 请参阅:您可以将列定义为@Ravinder回答的非空 除此之外,还可以为列设置默认值。如果我们以前面的答案为例,我们
非空
它导致需要输入。但若字段不为空,则需要显式验证脚本 例如:
create table example(
login_name varchar(16) not null
pass_word varchar(32) not null
);
请参阅:您可以将列定义为@Ravinder回答的非空 除此之外,还可以为列设置默认值。如果我们以前面的答案为例,我们可以按如下方式进行:
创建表示例(
登录名varchar(16)=空
pass_word varchar(32)=null
);代码>
这里,如果没有收到这些列的值,那么默认情况下将插入NULL。我假设您也不希望表中允许空白(空字符串,而不是NULL
)值
通常,这就是检查
约束的目的。你做的事情
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
但是,MySQL
解析约束,但不强制执行约束。您仍然可以插入空值
要解决此问题,请在插入前创建一个触发器,并在尝试插入空白值时发出信号:
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;
如果要禁止更新空白值,请在更新之前对执行相同操作。请使用非空并参考这是无效的创建表语句。=NULL
应该做什么?@a_horse_,名称:是的,mybad。我在这里声明了一个存储过程的语法,我们想在其中为表的一列设置一个默认值。我使用了“NOTNULL”,但insert命令仍然运行良好,并且在表中插入了一行(使用SQLYG)。但是,通过命令行终端执行相同操作会抛出错误(根据需要)。我不确定这是否是由于两者之间的模式差异造成的。