首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用liquibase设置列数据库的默认值为0?

问如何使用liquibase设置列数据库的默认值为0?
EN

Stack Overflow用户
提问于 2015-05-28 23:23:35
回答 3查看 4.5K关注 0票数 2

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

代码语言:javascript
复制
<column name="referralClicks" type="int"/>

当我第一次在数据库中保存我的用户时。referralClicks为空。但是我想设置一个默认值(0),并且我尝试了以下配置:

代码语言:javascript
复制
 <addDefaultValue 
            columnDataType="int"
            columnName="referralClicks"
            defaultValueNumeric="0"
            tableName="USER"/>
   </changeSet>

我使用的是MySQL数据库。在结构中,我可以看到默认值被设置为0。

​

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

​

在代码中,如果没有设置,我也会检索null值。

代码语言:javascript
复制
Integer referralClicks = user.getReferralClicks();

我错过了什么?

EN

回答 3

Stack Overflow用户

发布于 2015-05-29 00:07:41

你可以像这样用你现有的数据:

代码语言:javascript
复制
<update tableName="USER">
    <column name="referralClicks" valueNumeric="0"/>
    <where>referralClicks IS NULL</where>
</update>

或者已经用原始说明过的情况

代码语言:javascript
复制
<sql>
    UPDATE USER SET referralClicks = 0 WHERE referralClicks IS NULL
</sql>
票数 2
EN

Stack Overflow用户

发布于 2020-12-31 02:13:13

为您不希望为空的列添加约束,如下所示:

代码语言:javascript
复制
        <column name="columnName" type="int" defaultValueNumeric="0">
           <constraints nullable="false" />
        </column>
票数 1
EN

Stack Overflow用户

发布于 2015-05-28 23:48:38

当您更改数据库中的列以设置默认值时,不会更新数据库中的现有行。如下所示:

代码语言:javascript
复制
UPDATE user 
 SET referralClicks = 0
WHERE referralClicks IS NULL
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30510796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档