2016-03-25 6 views
1

Kann ich partitionierten Tabelle erstellen wie:wie partitionierten Tabelle erstellen, mit 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)); 

-Tags liquibase? Ich meine nicht mit benutzerdefinierten <sql> aber mit <createTable>

Antwort

0

Nicht ohne Ihre eigene benutzerdefinierte Änderung Tag (wie Datical getan hat).

+0

Dank, aber es ist nicht der Grund für die Migration zu einem anderen Datenbankmigrationstool in einem 3-jährigen Projekt) –

2

Seit 1.9: Sie können modifySql verwenden, um die createTable Ausgabe

<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> 
     <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 gibt das folgende SQL (nach dem updateSql Ziel) anhängen:

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));