我正在使用 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
(不带引号)作为您的列的值,您应该会收到预期的错误消息。
如果这些测试按预期工作,那么一切都很好,您的问题实际上是您想要防止插入空白字符串。查看这个问题 https://stackoverflow.com/questions/2514178/im-looking-for-a-constraint-to-prevent-the-insert-of-an-empty-string-in-mysql获取建议,或者只是在查询之前的验证过程中检查空白字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)