0

タイプ TIMESTAMP WITH TIME ZONE のテーブルに列を作成したいのですが、デフォルトで行が挿入された時刻に設定します。私たちは 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 でこれに遭遇した人はいますか? これを回避策としてステートメントとして書き直すことはできますが、これを Liquibase の方法で試してみたかったのです。

4

2 に答える 2

2

はい、defaultValueComputed は動作します。

<column name="actiondate" type="timestamp with time zone" defaultValueComputed="current_timestamp"/>
于 2015-09-16T12:48:23.577 に答える
1

関数呼び出しにはdefaultValueComputedを使用します。defaultValue文字列値を想定しています。

于 2012-07-25T05:34:08.717 に答える