我需要mysql语句的帮助。我在mysql表中有一个名为Code的字段,它被定义为Interger(7) NOT NULL默认值9999999。
我的问题是,当我执行以下声明时,sql:
INSERT INTO mytable (Id, Code) VALUES ('123','');我可以在字段代码值0 (0)中插入。为什么不在字段代码中插入值9999999?
谢谢。
发布于 2016-01-13 10:59:43
只有在不提供值时才使用默认值。尝试插入而不提供代码列值
INSERT INTO mytable (Id, Code) VALUES ('123');发布于 2016-01-13 10:37:09
因为您需要插入null而不是空字符串(或者根本不提供@Vipin所提到的任何值)。
INSERT INTO mytable (Id, Code)
VALUES ('123', NULL);空字符串仍然是值,只有在不提供值时才使用默认值。
因为code是一个int字段,所以MySQL尝试将''转换为一个数字,结果是0。
发布于 2016-01-13 10:38:09
尝尝这个
INSERT INTO mytable (Id) VALUES ('123');在您习惯于此之前,空值可能会令人惊讶。从概念上讲,NULL意味着“缺失的未知值”,它与其他值的处理方式有些不同。
这就是为什么在null情况下不能插入默认值的原因
http://dev.mysql.com/doc/refman/5.7/en/working-with-null.html
https://stackoverflow.com/questions/34764382
复制相似问题