Liquibase能否通过引用历史changeset id回滚drop table操作?
我新增了一个包含<dropTable table_name="foo">的changeset,用于删除不再需要的表foo。由于dropTable不支持自动回滚,我可以手动指定回滚动作(复制最初创建foo的changeset内容),但如果能直接重新应用该历史changeset会更便捷且不易出错,这种操作是否可行?
操作可行性结论
该操作是可行的,相关说明可在Liquibase官方文档的Auto Rollback子页面中查阅,该页面隶属于using-rollback文档板块,不仅列出了各类变更类型的自动回滚支持能力,还给出了引用旧changeSetId的示例。
功能局限性
- 如果要引用的changeset存储在其他文件中(例如项目中所有次版本变更都存放在独立文件中,通过
"include file=..."标签引入),则无法找到对应的changeset。 - 该功能仅支持指定单个changeset,若目标表是通过多个changeset创建的(比如通过额外步骤添加外键),仅指定单个changeset无法恢复到原有的数据库状态。
内容的提问来源于stack exchange,提问作者Matthias Roosz
相关产品推荐
相关产品推荐

