首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL已将列设置为null,但仍然接受null值

问MYSQL已将列设置为null,但仍然接受null值
EN

Stack Overflow用户
提问于 2014-11-16 10:09:34
回答 1查看 1.6K关注 0票数 0

用于mysql5.5中的表的

表名:

代码语言:javascript
复制
id:
name:
detail:

这里甚至改变了桌子:

代码语言:javascript
复制
ALTER TABLE tablename MODIFY name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL;

或

代码语言:javascript
复制
ALTER TABLE `tablename` CHANGE `name` `name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL DEFAULT NOT NULL;

插入值后:

代码语言:javascript
复制
INSERT INTO `databasename`.`tablename` (`id`, `name`, `detail`) VALUES (NULL, '', 'asdfasfdadsfadsfafd');

查询已成功运行,表中未添加错误行,

我如何才能防止这样的空或空。

问候

EN

回答 1

Stack Overflow用户

发布于 2014-11-16 10:17:52

试试这个:

代码语言:javascript
复制
ALTER TABLE tablename 
MODIFY COLUMN name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL CHECK (name <> '');

演示:

代码语言:javascript
复制
mysql> create table tablename(id int(2) not null, something varchar(25) null, primary key(id));
Query OK, 0 rows affected (0.15 sec)
mysql> insert into tablename values(0,'hello');
Query OK, 1 row affected (0.38 sec)

mysql> insert into tablename values(1,'salut');
Query OK, 1 row affected (0.31 sec)

mysql> select * from tablename;
+----+-----------+
| id | something |
+----+-----------+
|  0 | hello     |
|  1 | salut     |
+----+-----------+
2 rows in set (0.00 sec)

现在,我运行UPDATE命令:

代码语言:javascript
复制
mysql> ALTER TABLE tablename  MODIFY COLUMN something VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL;
Query OK, 2 rows affected (0.70 sec)
Records: 2  Duplicates: 0  Warnings: 0

我插入一个正常行:

代码语言:javascript
复制
mysql> insert into tablename values(2,'france');
Query OK, 1 row affected (0.29 sec)

但是它不允许我插入一个空值:

代码语言:javascript
复制
mysql> insert into tablename values(3,NULL);
ERROR 1048 (23000): Column 'something' cannot be null

我检查一下以确定:

代码语言:javascript
复制
mysql> select * from tablename;
+----+-----------+
| id | something |
+----+-----------+
|  0 | hello     |
|  1 | salut     |
|  2 | france    |
+----+-----------+
3 rows in set (0.00 sec)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26955826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档