【发布时间】:2016-05-10 04:24:36
【问题描述】:
假设需要向表中添加 2 列并修改 1。从纯设计视图中,我需要创建 3 个具有 3 个不同前提条件的变更集:2 列存在,1 列类型错误。
这是一种清晰的设计方法,但它会导致 3 个单独的 alter table,这可能非常昂贵。例如,当添加或修改列时,MySql 会复制或重建整个表。但它允许将几个修改过的语句合并为一个。但是一个变更集需要结合先决条件,这是不可能的——当其中一个为真或全部为真时,我应该执行大变更吗?
那么有没有办法查看几个先决条件并仅从成功的先决条件构造alter table?
【问题讨论】:
-
关于先决条件的说明:您通常应该只依靠 Liquibase 的变更日志跟踪来了解是否已应用变更集。前提条件有时很有帮助,但如果您完全依赖它们来确定应该执行什么,那么数据库更改没有得到足够好的控制通常是一种“不良代码气味”。只需确保您仅使用先决条件进行隔离检查,以使数据库恢复正常。
标签: mysql sql liquibase changeset