Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql列约束为";不为空";/&引用;“必需”;_Mysql - Fatal编程技术网

Mysql列约束为";不为空";/&引用;“必需”;

Mysql列约束为";不为空";/&引用;“必需”;,mysql,Mysql,我们可以在mysql中指定一列为“notempty”/“required”吗。要求是确保在任何记录插入时,字段都不会保持空白。使用非空 它导致需要输入。 但若字段不为空,则需要显式验证脚本 例如: create table example( login_name varchar(16) not null pass_word varchar(32) not null ); 请参阅:您可以将列定义为@Ravinder回答的非空 除此之外,还可以为列设置默认值。如果我们以前面的答案为例,我们

我们可以在mysql中指定一列为“notempty”/“required”吗。要求是确保在任何记录插入时,字段都不会保持空白。

使用
非空

它导致需要输入。
但若字段不为空,则需要显式验证脚本

例如:

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)。但是,通过命令行终端执行相同操作会抛出错误(根据需要)。我不确定这是否是由于两者之间的模式差异造成的。