タイプ 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 の方法で試してみたかったのです。