我正在和liquibase一起工作。我有一个用户表,其列定义如下:
<column name="referralClicks" type="int"/>当我第一次在数据库中保存我的用户时。referralClicks为空。但是我想设置一个默认值(0),并且我尝试了以下配置:
<addDefaultValue
columnDataType="int"
columnName="referralClicks"
defaultValueNumeric="0"
tableName="USER"/>
</changeSet>我使用的是MySQL数据库。在结构中,我可以看到默认值被设置为0。

但是当我有数据时,referralClicks是空的:

在代码中,如果没有设置,我也会检索null值。
Integer referralClicks = user.getReferralClicks();我错过了什么?
发布于 2015-05-29 00:07:41
你可以像这样用你现有的数据:
<update tableName="USER">
<column name="referralClicks" valueNumeric="0"/>
<where>referralClicks IS NULL</where>
</update>或者已经用原始说明过的情况
<sql>
UPDATE USER SET referralClicks = 0 WHERE referralClicks IS NULL
</sql>发布于 2020-12-31 02:13:13
为您不希望为空的列添加约束,如下所示:
<column name="columnName" type="int" defaultValueNumeric="0">
<constraints nullable="false" />
</column>发布于 2015-05-28 23:48:38
当您更改数据库中的列以设置默认值时,不会更新数据库中的现有行。如下所示:
UPDATE user
SET referralClicks = 0
WHERE referralClicks IS NULLhttps://stackoverflow.com/questions/30510796
复制相似问题