liquibase:你能用 liquibase addColumn 指定“列后”吗?
Posted
技术标签:
【中文标题】liquibase:你能用 liquibase addColumn 指定“列后”吗?【英文标题】:liquibase: can you specify "after column" with liquibase addColumn? 【发布时间】:2014-02-06 10:21:57 【问题描述】:有没有办法编写一个 liquibase addColumn 变更集,以便它生成类似 sql
ALTER TABLE xxx ADD COLUMN yyy AFTER zzz;
我的意思是,有没有办法在 liquibase 行话中添加相当于“列后 zzz”的内容?
【问题讨论】:
liquibase.org/documentation/modify_sql.html 【参考方案1】:在 Liquibase 3.1 中,列标签上有新的“afterColumn”、“beforeColumn”和“position”属性。
http://www.liquibase.org/documentation/column.html 的文档刚刚更新以包含它们。
【讨论】:
这些列属性尚未生效。相关错误报告:liquibase.jira.com/browse/CORE-1745【参考方案2】:在this 修复之前,您可以使用modifySql。
<changeSet id="1-1" author="david">
<comment>Add column field to example table</comment>
<addColumn tableName="example">
<column name="name" type="VARCHAR(50)" defaultValue="">
<constraints nullable="false"/>
</column>
</addColumn>
<!-- Use modifySql so we can insert it in the desired position -->
<modifySql>
<append value=" AFTER some_column"/>
</modifySql>
</changeSet>
【讨论】:
BTWappend
当字段具有唯一约束时在 H2 上失败(因为在这种情况下将生成 2 个 ALTER TABLE
命令)。以上是关于liquibase:你能用 liquibase addColumn 指定“列后”吗?的主要内容,如果未能解决你的问题,请参考以下文章