我和liquibase一起工作。我有一个用户表,其列定义如下:

<column name="referralClicks" type="int"/>

当我第一次在数据库中保存我的用户时。referralClicks为空。但是我想设置一个默认值(0),我尝试了以下配置:
 <addDefaultValue
            columnDataType="int"
            columnName="referralClicks"
            defaultValueNumeric="0"
            tableName="USER"/>
   </changeSet>

我使用MySQL数据库。在结构中,我可以看到默认值设置为0。
但当我有数据时,referralClicks为空:
在代码中,如果没有设置这个值,我还会检索空值。
Integer referralClicks = user.getReferralClicks();

我错过了什么?

最佳答案

你可以用这样的方式来引用你现有的数据:

<update tableName="USER">
    <column name="referralClicks" valueNumeric="0"/>
    <where>referralClicks IS NULL</where>
</update>

或者正如raw<update>所述:
<sql>
    UPDATE USER SET referralClicks = 0 WHERE referralClicks IS NULL
</sql>

07-28 01:02