我和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>