我在项目上使用Liquibase,并且每次更新Liquibase后都需要始终执行一个过程...
当前,changeSet如下所示:
<changeSet id="liquibase-0" author="liquibase" runAlways="true">
<sqlFile relativeToChangelogFile="true" path="procedure/owner-changer.sql"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
如何确保此changeSet将作为上一次更新操作运行?
谢谢
小智 9
从 Liquibase 3.5.0 开始,有runOrder两个可能的值可用的新属性:first和last。将 changeSet 作为最后一个运行的示例:
<changeSet id="123" author="author0" runAlways="true" runOrder="last">
<sql> ... </sql>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
它尚未在文档中描述。发行说明:http : //www.liquibase.org/2016/04/liquibase-3-5-0-released.html
我会通过将变更集分成两个文件来做到这一点:一个包含您的“常规”变更集,另一个仅包含这个单一变更集。然后以正确的顺序创建一个包含两者的新“主”变更集:
<databaseChangeLog>
<include file="standard_changes.xml" relativeToChangelogFile="true"/>
<include file="change_owner.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>
Run Code Online (Sandbox Code Playgroud)
change_owner.xml 仅包含您在问题中显示的单个变更集。
这并不能保证它总是最后运行,因为您仍然可以以不同的顺序手动运行两个变更集,但是如果您总是运行master.xml那么您可以确保“变更所有者”最后执行。
从理论上讲,您可以为“主”更改日志指定与当前文件相同的名称。但是由于文件名是变更集“签名”的一部分,如果您已经通过现有文件部署了更改,我不会这样做。
| 归档时间: |
|
| 查看次数: |
3596 次 |
| 最近记录: |