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>
目录中有三个脚本和一个 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>