我想在带有时区的TIMESTAMP类型的表上有一个列,但它默认为插入行的时间。我们使用Liquibase,所以我想用标准的Liquibase语法来完成这个任务。
我想应该是:
<changeSet author="chuck" id="2012-07-24.1">
<addColumn tableName="foo">
<column name="createdOn" type="timestamp" defaultValue="LOCALTIMESTAMP">
<constraints nullable="false"/>
</column>
</addColumn>
</changeSet>
这将生成SQL:
ALTER TABLE foo ADD "createdOn" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'LOCALTIMESTAMP';
我可以修改这个语句并删除LOCALTIMESTAMP周围的单引号,它将在psql中执行。
ALTER TABLE foo ADD "createdOn" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT LOCALTIMESTAMP;
还有人在Liquibase和PostgreSQL中遇到过这种情况吗?我可以把它重写为一个声明,作为一个解决办法,但我想尝试这样做的液化方式。
最佳答案
对函数调用使用defaultValueComputed。defaultValue
采用字符串值。
关于postgresql - 是否可以使用Liquibase和PostgreSQL将列默认设置为LOCALTIMESTAMP?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11640654/