【发布时间】:2019-10-05 06:55:00
【问题描述】:
我想在 liquibase 中创建一个新的插入变更集,使用序列填充 id 字段。有什么方法可以使其与 Oracle 和 Postgres 的数据库无关?
这是预言机的方式:
<changeSet author="XX" id="XX">
<insert tableName="NODO_MENU">
<column name="ID" defaultValueSequenceNext="SEQ_NODO_MENU" />
<column name="CODIGO" value="ABC" />
<column name="ORDEN" value="0" />
</insert>
<rollback>
<delete tableName="NODO_MENU">
<where>CODIGO = 'ABC'</where>
</delete>
</rollback>
</changeSet>
它在 postgres 中不起作用: [失败的 SQL: INSERT INTO public.NODO_MENU (ID, CODIGO, ORDEN) VALUES (SEQ_NODO_MENU.NEXTVAL, 'ABC', '0')]
为了让它在 postgres 中工作,我将列标签更改为:
<column name="ID" valueComputed="nextval('SEQ_NODO_MENU')" />
如何编写此变更集以使其在 Oracle 和 Postgress 中工作?
【问题讨论】:
标签: liquibase