一尘不染

将NOT NULL约束添加到列

sql

我正在使用PHPMyAdmin,尝试将NOT NULL约束添加到表的列中。

PHPMyAdmin接受我的以下查询:

ALTER TABLE `wall` MODIFY `token_message` varchar(40) NOT NULL;

但是我仍然可以插入空字符串(= NULL),我不明白为什么。

PS:如果您要给我一些其他查询来添加此约束,请注意,我已经尝试了这3种方法,这些方法在我的PHPMyAdmin中不起作用(错误类型:#1064-您的SQL语法有错误;请参阅手册):

ALTER TABLE `wall` ALTER COLUMN `token_message` SET NOT NULL;
ALTER TABLE `wall` ALTER COLUMN `token_message` varchar(40) NOT NULL;
ALTER TABLE `wall` MODIFY `token_message` CONSTRAINTS token_message_not_null NOT NULL;

阅读 176

收藏
2021-05-30

共1个答案

一尘不染

您写道:“我仍然可以插入空字符串(=
NULL),”这听起来像是一种误解。在SQL中,空字符串的结果不为NULL,反之亦然。尝试插入一个空字符串并执行SELECT from wall where token_message is NULL。您应该返回零行。然后尝试执行插入操作,在该插入操作中您指定NULL(未加引号)作为列的值,并且应该会收到预期的错误消息。

如果这些测试按预期工作,则一切正常,您的问题实际上是您要防止插入空白字符串。

2021-05-30