我使用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天。 可能吗?还是价值领域存在一些错误? 预先谢谢你。
答案 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
是保留关键字。用该名称创建表是一个非常糟糕的主意。