如何使用 Liquibase 强制执行列顺序?

How to enforce column order with Liquibase?

设置:

  1. liquibase 3.3.5
  2. PostgreSQL 9.3
  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 属性?