Вставьте новые данные, используя Liquibase, postgreSQL и последовательность - PullRequest
0 голосов
/ 10 января 2019

Как мне сделать вставку для PostgreSQL, используя Liquibase, если мои идентификаторы последовательны. Я пытаюсь со следующим:

<changeSet author="rparente" id="service-1.1-2019-01-09-01">
        <insert tableName="tenant">
            <column name="id"defaultValueSequenceNext="hibernate_sequence"/>
            <column name="description" value="Prueba"/>
            <column name="name" value="antel"/>
            <column name="service_id" value="antel"/>
        </insert>
    </changeSet>

и я пытаюсь с

<changeSet author="rparente" id="service-1.1-2019-01-09-01">
        <insert tableName="tenant">
            <column name="id"  value="nextval('hibernate_sequence')"/>
            <column name="description" value="Prueba"/>
            <column name="name" value="antel"/>
            <column name="service_id" value="antel"/>
        </insert>
    </changeSet>

Ошибка:

ОШИБКА: нулевое значение в столбце "id" нарушает ненулевое ограничение

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Я нашел решение для вставки данных в Postgres с идентификаторами последовательности (без значения по умолчанию)

<changeSet author="author_name" id="service-1.1-2019-01-09-01"> 
    <insert tableName="tenant"> 
        <column name="id" valueSequenceNext="name_sequence"/> 
        <column name="description" value="TEST"/> 
        <column name="name" value="test"/> 
        <column name="service_id" value="testl"/> 
        <column name="status" value="ACTIVE"/> 
    </insert> 
</changeSet>
0 голосов
/ 10 января 2019

Проверьте документ ColumnConfig. Вы должны иметь возможность установить свойство valueComputed и вызвать в нем функцию Postgres:

<column name="id"  valueComputed="nextval('hibernate_sequence')"/>
...