将NOT NULL约束添加到列

Ano*_*non 3 mysql sql phpmyadmin

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

PHPMyAdmin接受以下查询:

ALTER TABLE `wall` MODIFY `token_message` varchar(40) NOT NULL;
Run Code Online (Sandbox Code Playgroud)

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

PS:如果你要给我一些其他的查询来添加这个约束,请注意我已经尝试过这些在我的PHPMyAdmin中无效的3(错误类型:#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; 
Run Code Online (Sandbox Code Playgroud)

oct*_*ern 5

你写道,"我仍然可以插入空字符串(= NULL),"这听起来像是一种误解.在SQL中,空字符串不会计算为NULL,反之亦然.尝试插入一个空字符串并执行SELECT from wall where token_message is NULL.你应该得到零行.然后尝试执行插入操作,指定NULL(未引用)作为列的值,您应该得到预期的错误消息.

如果这些测试按预期工作,那么一切都很好,你的问题实际上是你想要防止插入空字符串.在查询之前,请查看此问题以获取建议,或仅在验证期间检查空字符串.