Flyway中分区与序列SQL脚本属于版本化还是可重复脚本?
Flyway 数据库迁移脚本分类判定
分区函数(Partition Function)、分区方案(Partition Scheme)脚本
应归类为 Versioned Scripts(版本化脚本)
- 这类对象属于数据库核心底层结构,多数主流数据库(如SQL Server)不支持
CREATE OR REPLACE类的幂等创建语法,一旦创建后修改需要联动调整依赖的分区表、甚至涉及业务数据迁移,几乎不会出现需要反复覆盖更新定义的场景。 - 版本化脚本仅按版本号执行一次的特性,完全匹配这类对象的创建逻辑:如果后续需要调整分区规则,直接新建更高版本的版本化脚本执行变更即可,无需修改原有脚本。
- 如果强行归类为可重复脚本,你需要额外编写大量对象存在性校验、依赖校验、差异比对逻辑,维护成本极高,不符合可重复脚本的设计场景。
SEQUENCE 序列创建脚本
优先归类为 Versioned Scripts(版本化脚本),特殊场景可按需归类为 Repeatable Scripts(可重复脚本)
- 常规场景下序列和其他基础结构对象属性一致,创建后只会偶尔调整增量、上下限等属性,用版本化脚本创建、后续变更走新版本脚本处理即可,逻辑最简单也最不容易出问题。
- 仅当你使用的数据库支持
CREATE OR REPLACE SEQUENCE幂等语法,且业务有频繁跨环境同步序列定义(比如统一多环境的序列起始值、增量规则)的需求时,可以编写带存在性校验的幂等创建脚本,归类为可重复脚本。
内容的提问来源于stack exchange,提问作者Maryo David
相关产品推荐
相关产品推荐

