2015-05-15 4 views
2

Я хотел бы сделать вставку Liquibase, при этом первичный ключ будет автоматически сгенерирован из последовательности, определенной в базе данных. Целевой базой данных является HSQLDB.Как вставить с помощью последовательности с Liquibase

Он работает, чтобы сделать вставку, задающее значение первичного ключа

<insert ...> 
    <column name="TAG_ID" valueNumeric="2"/> 

я нашел это (правда старше) conversation about it, но вопрос остается тем же самым. Предлагаемое исправление не работает для HSQLDB.

Глядя на the docs Я пробовал некоторые вещи, как

<column name="TAG_ID" defaultValueSequenceNext="TAG_ID_SEQ" /> 

<column name="TAG_ID" defaultValueSequenceNext="TAG_ID_SEQ.NEXTVAL" /> 

<column name="TAG_ID" valueComputed="TAG_ID_SEQ.NEXTVAL" /> 

<column name="TAG_ID" autoIncrement="true" /> 

, но ни один из них не кладите ничего в ключе, когда я делаю вставку (вставка не будет работать на нулевой первичный ключ).

Как это осуществить?

ответ

3

У HSQLDB есть настройка для использования синтаксиса Oracle. Вы можете установить HSQLDB использовать синтаксис оракула так:

<changeSet ... 
    <sql dbms="hsqldb" >SET DATABASE SQL SYNTAX ORA TRUE</sql> 
</changeSet> 

После этого, он работает, чтобы сделать вставку, как это:

<insert ... 
    <column name="TAG_ID" valueComputed="TAG_ID_SEQ.NEXTVAL"/> 
+0

есть что-то подобное для h2? – krmanish007

+0

H2 имеет режим совместимости Oracle, как указано здесь (http://www.h2database.com/html/features.html), но я не пробовал это, поэтому YMMV. Если вы обнаружите, что это работает, не стесняйтесь писать здесь! – Jay

Смежные вопросы