在这个表中,我希望标题列在插入或更新行时不允许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 | |
+-------+--------------+------+-----+---------+----------------+
创建的表。
现在我插入:
插入标签(id
,title
)值(1,'title1'); .....真
插入标签(id
)值(2); ......................... true -----这不应该为空。
mysql> select * from tab;
+----+--------+
| id | title |
+----+--------+
| 1 | title1 |
| 2 | |
+----+--------+
2 rows in set (0.00 sec)
答案 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
,请参阅演示小提琴