如何使用 liquibase 创建分区表

Vov*_*syk 4 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));
Run Code Online (Sandbox Code Playgroud)

使用 liquibase 标签?我的意思不是用习惯<sql>而是用<createTable>

Bir*_*abs 9

从 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>
Run Code Online (Sandbox Code Playgroud)

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));
Run Code Online (Sandbox Code Playgroud)


Ste*_*nie 0

除非编写您自己的自定义更改标签(就像Datical所做的那样)。