MySQL默认值问题

时间:2009-09-21 08:50:25

标签: mysql null default-value

在MySQL中,整数字段的默认值为0.在插入期间,该字段的值为NULL,并插入NULL。我使用该字段的值进行一些算术操作,如加法,乘法,除法。插入NULL时会导致错误。如何解决这个问题?如果插入值为null,则DB不支持整数,十进制等字段的默认值(可能不适用于字符串类型,因为NULL对字符串有效)。如果不是,那么为数值类型设置NULL值是否正确?

由于某种原因当我有一个带有NOT NULL和DEFAULT VALUE为0的十进制字段时,插入失败并显示错误消息“第1行的列'Column_Name'的数据被截断”。

如果我删除了NOT NULL属性,插入将成为与警告相同的消息。

插入到该十进制字段的值是AVG()MySql函数

的结果

真的很无能......

可能是什么原因?

5 个答案:

答案 0 :(得分:4)

对于任何mysql列/类型,NULL都是正确的值。

您可以将列设置为NOT NULL,或者您需要使用脚本语言解析它,因此不会插入null。

答案 1 :(得分:3)

您可以将字段设置为NOT NULL以完全避免此问题。如果不需要NULL值,那么您应该这样做。当列为NOT NULL时,将插入类型的默认值(0表示整数),而不是NULL

答案 2 :(得分:3)

创建表结构时,必须为表结构指定默认值“0”。或者您可以使用以下方式更改它:

ALTER TABLE `TableName` CHANGE `FieldName `FieldName` INT( 11 ) NULL DEFAULT '0'

希望这有帮助。

答案 3 :(得分:3)

要插入默认值,您不必为列指定任何值,甚至不指定NULL,因为NULL是特定值。

答案 4 :(得分:1)

如果计算没有问题你正在做,将列定义更改为NOT NULL DEFAULT 0然后你将始终有正确的整数(或十进制)。但是你需要记住将旧值从null更改为0.