Liquibase:如何在更改其中一个时触发文件夹中的所有脚本?

Liqubase: How to trigger all scripts from the folder on changing one of them?

目录中有三个脚本和一个 changelog.xml。每个脚本重新填充一个 table(delete * from, N lines inserts):

 <databaseChangeLog
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
     http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
  <include file="refillTable1.sql" relativeToChangelogFile="true" />
  <include file="refillTable2.sql" relativeToChangelogFile="true" />
  <include file="refillTable3.sql" relativeToChangelogFile="true" />
  ...
</databaseChangeLog>

问题是它们彼此有 约束 所以我不能在不事先删除 Table1 的情况下删除 Table3 的所有内容,因此当我需要用 refillTable3.sql 重新填充 Table3 我也需要 refillTable1.sql 重新执行。

当我只更改其中一个脚本时,如何让所有三个脚本重新执行?我明确不想在每次部署时重新执行所有脚本。

我不使用 "include" 标签,而是使用 "sql" 标签并将其放入 changeSet。

然后,您可以将 "runOnChange=true" 添加到 "changeSet" 标签。更新 .sql 文件时将执行 changeSet。

<changeSet runOnChange="true" id="1" author="r2">
    <sqlFile path="refillTable1.sql"/>
</changeSet>
<changeSet runOnChange="true" id="2" author="r2">
    <sqlFile path="refillTable2.sql"/>
</changeSet>
<changeSet runOnChange="true" id="3" author="r2">
    <sqlFile path="refillTable3.sql"/>
</changeSet>