0

我有支出表,我将列的默认值设置为0.000total_tips(从我的表模式中提取):

total_tips       | decimal(12, 4) | YES  |      | 0.0000 | <- Default set as '0.0000'

但是现在,谁能解释为什么我NULL的表中还有值:

mysql> select total_tips from payouts where id = 4157;
+------------+
| total_tips |
+------------+
|       NULL |
+------------+
1 row in set (0.00 sec)

在此之前,我运行了一个ALTER如下所示的命令(设置默认值):

mysql> ALTER TABLE payouts change total_tips total_tips decimal(12,4) default 0 ;
4

2 回答 2

3

可能没有将值设置为NOT NULL,因此接受 NULL 值。你需要更新你的整个基地:

UPDATE payouts SET total_tips = 0 WHERE total_tips IS NULL
于 2013-07-31T15:40:05.680 回答
3

如果您对已存储数据的表中的现有列设置默认值,则不会自动更新现有行。

我的意思是这仅适用于 mssql 和 mysql。在 oracle 中现有的行将被更新。

于 2013-07-31T15:44:33.243 回答