Liquibase不会将间隔添加到current_timestamp

时间:2018-09-26 07:39:59

标签: postgresql liquibase

我使用postgres DB,我遇到了一个问题,即liquibase向当前时间添加间隔作为默认值:

<property name="expired" value="current_timestamp + interval '60 days'" 
dbms="postgresql"/>

<addColumn tableName="user">
        <column name="expired" type="timestamp" 
                               defaultValueDate="${expired}">
            <constraints nullable="false"/>
        </column>
    </addColumn>

Expired属性始终返回当前日期,而不添加60天。 可能吗?还是价值领域存在一些错误? 预先谢谢你。

1 个答案:

答案 0 :(得分:2)

您需要对表达式使用defaultValueComputed

但是显然,Liquibase中存在一个错误,阻止它正确解析带有current_timestamp的表达式。但是使用now()似乎可行:

<property name="expired" value="now() + interval '60 days'" dbms="postgresql"/>  

<addColumn tableName="user">
  <column name="expired" type="timestamp" defaultValueComputed="${expired}">
    <constraints nullable="false"/>
  </column>
</addColumn>

不相关,但是:user是保留关键字。用该名称创建表是一个非常糟糕的主意。