我想在带有时区的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中遇到过这种情况吗?我可以把它重写为一个声明,作为一个解决办法,但我想尝试这样做的液化方式。

最佳答案

对函数调用使用defaultValueComputeddefaultValue采用字符串值。

关于postgresql - 是否可以使用Liquibase和PostgreSQL将列默认设置为LOCALTIMESTAMP?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11640654/

10-10 00:53