我无法弄清楚这是怎么回事,也许你们可以帮助我!
我有一个名为“NOT NOT NULL”的用户表。
这给我一个错误。
INSERT INTO `user` (name) values (NULL);`
这样可行,并将名称设置为''
。
UPDATE `user` SET name=NULL WHERE id = '1'
为什么我可以更新它?为什么我试图插入时没有向我显示相同的错误?
答案 0 :(得分:3)
如果您使用的是MySQL,这是一个不是bug的错误。 http://bugs.mysql.com/bug.php?id=33699 它已修复,然后恢复修复。
此更改已恢复,因为原始报告已确定 不要成为bug:在UPDATE中为NULL NULL列分配NULL 语句只应在严格的SQL模式下生成错误并设置 列为隐式默认值,否则为警告 原始行为。
答案 1 :(得分:0)
假设您从空表开始,当您尝试插入具有空名称的用户并且它给出错误时,该表仍为空。更新命令不会给您一个错误,但因为没有id为1的行,所以没有更改任何行。如果您执行以下操作,它应该会给您一个错误:
INSERT INTO user (id, name) VALUES (1, "blah")
UPDATE user SET name=NULL WHERE id=1
编辑: 啊......你在我写答案时更新了你的问题。 在这种情况下,您是否有一个空字符串作为名称列的默认值?它可能正在使用它。
答案 2 :(得分:0)
您无法更新它。如果无法通过WHERE语句找到任何匹配项,则只能执行查询。在这种情况下,您没有收到错误,因为查询不会尝试更新任何行。