【问题标题】:Creating Oracle sequences with Liquibase使用 Liquibase 创建 Oracle 序列
【发布时间】:2017-07-29 17:08:10
【问题描述】:

我想为我在 Oracle 上使用的表的主 ID 创建一个自动递增的数字序列。

使用 Liquibase,我可以看到 Add Auto Increment 中的 Oracle 不支持该列的 autoincrement。那么如何才能为特定表添加排序。

以下是我目前拥有的。

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

【问题讨论】:

    标签: oracle liquibase oracle12c liquibase-hibernate


    【解决方案1】:

    Oracle 12c 确实支持自动增量。所以你要么需要 Liquibase 为其提供支持,要么只是“本地”创建表,也许使用 sqlplus 中的脚本

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2021-07-17
    • 2016-09-25
    • 1970-01-01
    相关资源
    最近更新 更多