我想在TIMESTAMP WITH TIME ZONE類型的表上有一列,但是它的默認值是插入行的時間。我們使用Liquibase,所以我想用標準的Liquibase語法來完成這個任務。是否可以使用Liquibase和PostgreSQL將列默認設置爲LOCALTIMESTAMP?
我希望這將是這樣的:
<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的方法。
狂野的猜測(沒有Liquibase的專家):你可以在這裏刪除雙引號嗎? 'defaultValue = LOCALTIMESTAMP'或者,如果這是不可能的,Liquibase會理解'defaultValue =「now():: timestamp」'? – 2012-07-25 00:32:38
@ErwinBrandstetter:由於這是XML,所以不能刪除雙引號。 – user272735 2012-07-25 05:39:52