TIMESTAMP WITH TIME ZONE 형식의 테이블에 열을 갖고 싶지만 기본적으로 행이 삽입 된 시간으로 설정해야합니다. 우리는 Liquibase를 사용하므로 표준 Liquibase 구문을 사용하여이 작업을 수행하고 싶습니다. 나는 그의 모습 기대Liquibase 및 PostgreSQL을 사용하여 열 기본값을 LOCALTIMESTAMP로 설정할 수 있습니까?
:
ALTER TABLE foo ADD "createdOn" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'LOCALTIMESTAMP';
내가이 문을 수정 및 LOCALTIMESTAMP 주위에 따옴표를 제거하고 psql의에서 실행할 수 있습니다
<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;
누구나 Liquibase 및 PostgreSQL에서이 문제가 발생 했습니까? 이 문제를 해결 방법으로 재 작성했지만 Liquibase 방식으로 시도하고 싶었습니다.
야생 추측 (Liquibase 전문가는 예외) : 여기서 큰 따옴표를 제거 할 수 있습니까? 'defaultValue = LOCALTIMESTAMP' 아니면, 가능하지 않다면, Liquibase는'defaultValue = "now() :: timestamp"'를 이해할 수 있습니까? –
@ErwinBrandstetter : 큰 따옴표는 XML로 제거 할 수 없습니다. – user272735