mysql,更新后的一个列,它获取null值,如何在插入和更新时不允许null

时间:2014-05-22 05:24:07

标签: mysql

在这个表中,我希望标题列在插入或更新行时不允许null(不是空白)....用户应该100%为它插入一些值,以便生成行。

    create table tab(id int not null auto_increment
                 primary key,
                 title varchar(255) not null );
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| title | varchar(255) | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+

创建的表。

现在我插入:

插入标签(idtitle)值(1,'title1'); .....真

插入标签(id)值(2); ......................... true -----这不应该为空。

mysql> select * from tab;
+----+--------+
| id | title  |
+----+--------+
|  1 | title1 |
|  2 |        |
+----+--------+
2 rows in set (0.00 sec)

1 个答案:

答案 0 :(得分:0)

为列NOT NULL添加title约束并删除default ''

因为default ''insert中没有为标题列提供值时,create table tab(id int not null auto_increment primary key, title varchar(255) not null default ''); insert into tab(title) values('aaaaa'),('mmmmmm'),(''); 会向标题列插入默认的空字符串。

所以,如果您的架构如下所示,插入值

NULL

然后尝试以下查询,它将返回0行。基本上,您在title列中没有EMPTY STRING值,而是select * from tab where title is null

create table tab(id int not null auto_increment
                 primary key,
                 title varchar(255) not null );

您的架构应如下所示,

{{1}}

如果您想进一步检查http://sqlfiddle.com/#!2/b5acf/3

,请参阅演示小提琴