如何使用liquibase

时间:2016-03-25 10:26:08

标签: mysql liquibase

我可以创建分区表,如:

CREATE TABLE person(
    id INT NOT NULL,
    NAME VARCHAR(30),
    borned TIMESTAMP)
PARTITION BY RANGE (UNIX_TIMESTAMP(borned)) (
    PARTITION p0 VALUES LESS THAN (UNIX_TIMESTAMP('2000-01-01 00:00:00')),
    PARTITION p1 VALUES LESS THAN (MAXVALUE));

使用liquibase标签?我的意思是不是使用自定义<sql>,而是使用<createTable>

2 个答案:

答案 0 :(得分:3)

自1.9:您可以使用modifySql附加到createTable输出

<changeSet author="StackOverflow" id="C0FE77AA-5517-11E7-8CAD-224C16886A7C">
    <createTable tableName="test">
        <column name="id" type="INT">
            <constraints nullable="false"/>
        </column>
        <column name="NAME" type="VARCHAR(30)"/>
        <column name="borned" type="TIMESTAMP"/>
    </createTable>
    <modifySql dbms="postgresql">
        <append value=" PARTITION BY RANGE (UNIX_TIMESTAMP(borned)) (
PARTITION p0 VALUES LESS THAN (UNIX_TIMESTAMP('2000-01-01 00:00:00')),
PARTITION p1 VALUES LESS THAN (MAXVALUE))"/>
    </modifySql>
</changeSet>

Liquibase输出以下SQL(根据updateSql目标):

CREATE TABLE db.test (id INT NOT NULL, NAME VARCHAR(30) NULL, borned timestamp NULL) PARTITION BY RANGE (UNIX_TIMESTAMP(borned)) (     PARTITION p0 VALUES LESS THAN (UNIX_TIMESTAMP('2000-01-01 00:00:00')),     PARTITION p1 VALUES LESS THAN (MAXVALUE));

答案 1 :(得分:0)

不是没有编写自己的自定义更改标记(如Datical已完成)。