如何使用 Liquibase 强制执行列顺序?
How to enforce column order with Liquibase?
设置:
- liquibase 3.3.5
- PostgreSQL 9.3
- Windows 7 终极版
已将 Liquibase.properties 文件设置为
changeLogFile = C://temp/changeset.xml,
我用 Liquibase (3.3.5) 创建了一个 diff 文件。
liquibase.bat diffChangeLog
检查 changeset.xml 文件显示
-<addColumn tableName="view_dx">
<column type="int8" name="counter" defaultValueNumeric="0" defaultValue="0"/>
</addColumn
问题是
liquibase.bat update
是 运行,更改后的 table 与引用 table 的列顺序不同。这会导致使用 SETOF 到 return table 行的存储过程出现问题。
在不破坏目标数据库上现有 table 的情况下,如何使用 Liquibase 强制执行列顺序?
TIA
我认为您通常无法让 Liquibase 强制执行列排序。您可能需要更改存储过程以使用列名而不是依赖位置,这是一个无论如何都要养成的好习惯。
您是否尝试过使用 addColumn
标签的 afterColumn
属性?
设置:
- liquibase 3.3.5
- PostgreSQL 9.3
- Windows 7 终极版
已将 Liquibase.properties 文件设置为
changeLogFile = C://temp/changeset.xml,
我用 Liquibase (3.3.5) 创建了一个 diff 文件。
liquibase.bat diffChangeLog
检查 changeset.xml 文件显示
-<addColumn tableName="view_dx">
<column type="int8" name="counter" defaultValueNumeric="0" defaultValue="0"/>
</addColumn
问题是
liquibase.bat update
是 运行,更改后的 table 与引用 table 的列顺序不同。这会导致使用 SETOF 到 return table 行的存储过程出现问题。
在不破坏目标数据库上现有 table 的情况下,如何使用 Liquibase 强制执行列顺序?
TIA
我认为您通常无法让 Liquibase 强制执行列排序。您可能需要更改存储过程以使用列名而不是依赖位置,这是一个无论如何都要养成的好习惯。
您是否尝试过使用 addColumn
标签的 afterColumn
属性?