2017-03-08 7 views
0

Ich möchte eine automatisch inkrementierende Zahlenfolge für die primäre ID der Tabellen, mit denen ich auf Oracle arbeite.Erstellen von Oracle-Sequenzen mit Liquibase

Mit Liquibase kann ich sehen, dass autoincrement für die Spalte für Oracle in Add Auto Increment nicht unterstützt wird. Wie kann ich eine Sequenz für eine bestimmte Tabelle hinzufügen?

Unten ist, was ich derzeit habe.

<databaseChangeLog 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog" 
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd"> 

    <property name="now" value="now()" dbms="mysql,h2"/> 
    <property name="now" value="current_timestamp" dbms="postgresql"/> 
    <property name="now" value="sysdate" dbms="oracle"/> 
    <property name="now" value="GETDATE()" dbms="mssql"/> 

    <property name="autoIncrement" value="true" dbms="mysql,h2,postgresql,mssql"/> 

    <property name="floatType" value="float4" dbms="postgresql, h2"/> 
    <property name="floatType" value="float" dbms="mysql, oracle, mssql"/> 

    <changeSet id="20170122022905-1" author="test"> 
     <createTable tableName="certificate_metadata"> 
      <column name="id" type="bigint" autoIncrement="${autoIncrement}"> 
       <constraints primaryKey="true" nullable="false"/> 
      </column> 

      <column name="org_id" type="bigint"> 
       <constraints unique="true" nullable="false"/> 
      </column> 

      <column name="certificate_id" type="uuid"> 
       <constraints nullable="false"/> 
      </column> 

      <column name="type" type="varchar(30)"> 
       <constraints nullable="false"/> 
      </column> 

      <column name="expiry_date" type="timestamp"> 
       <constraints nullable="true"/> 
      </column> 

      <column name="created_date" type="timestamp"> 
       <constraints nullable="true"/> 
      </column> 

      <column name="updated_date" type="timestamp"> 
       <constraints nullable="true"/> 
      </column> 
     </createTable> 
     <dropDefaultValue tableName="certificate_metadata" columnName="created_date" columnDataType="datetime"/> 
     <dropDefaultValue tableName="certificate_metadata" columnName="updated_date" columnDataType="datetime"/> 
    </changeSet> 
</databaseChangeLog> 

Antwort

2

Oracle 12c unterstützt Auto Increment. Sie müssen also entweder Liquibase unterstützen oder die Tabelle (nativ) erstellen, vielleicht mit einem Skript in sqlplus