我正在使用 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;
最佳答案
您写道,“我仍然可以插入空字符串 (=NULL)”,这听起来像是一种误解。在 SQL 中,空字符串的计算结果不会为 NULL,反之亦然。尝试插入一个空字符串并执行 SELECT from wall where token_message is NULL
。您应该返回零行。然后尝试在指定 NULL
(未加引号)作为列值的位置执行插入操作,您应该会收到预期的错误消息。
如果这些测试按预期工作,那么一切都很好,你的问题实际上是你想防止插入空白字符串。查看this question以获取建议,或者在查询之前在验证期间检查空白字符串。
关于mysql - 将 NOT NULL 约束添加到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10218252/