序列和分区的版本化或可重复脚本 - Flyway?

Posted

技术标签:

【中文标题】序列和分区的版本化或可重复脚本 - Flyway?【英文标题】:Versioned or Repeatable Scripts for Sequence & Partitions - Flyway? 【发布时间】:2022-01-03 22:14:07 【问题描述】:

我有用于创建分区函数和分区方案的 SQL 脚本。我希望通过 flyway 脚本来处理迁移。我想知道这些 SQL 脚本是否可以被视为可重复脚本或版本化脚本?

同样,我有用于创建 SEQUENCE 的脚本,这应该被视为版本化脚本还是可重复脚本?

【问题讨论】:

【参考方案1】:

只有在您尝试创建该函数之前检查该函数是否存在时,您才能将其设为可重复的脚本。否则,它将尝试在每次部署时创建它,从而导致错误。大致如下:

IF NOT EXISTS( SELECT * FROM sys.partition_functions WHERE name = 'MyFunction' ) 
BEGIN
CREATE PARTITION FUNCTION...
END

您对 SEQUENCE 执行相同的操作,但您想在此处查找它:sys.sequences。就是这样。

虽然,我可能不会让 SEQUENCE 或 PARTITION 可重复。它们通常创建一次,然后你就完成了。但是,我绝对可以想象在这样的情况下,您正在对多个系统进行各种不同类型的部署,其中这些东西是可重复的,以确保它始终存在,无论版本如何,这是一个好主意。

【讨论】:

谢谢,序列呢? 对不起。我完全错过了。同样的交易。我将对答案进行编辑。

以上是关于序列和分区的版本化或可重复脚本 - Flyway?的主要内容,如果未能解决你的问题,请参考以下文章

Flyway详解以及Springboot集成Flyway, 数据库脚本版本管理

Flyway 可重复迁移 - 在版本化迁移之前执行?

在 JPA 中使用 Flyway 创建的序列

flyway和可重复迁移的初始化

Flyway - 多个 git 分支上的 SQL 迁移脚本版本

如何将多个sql脚本执行到具有相同版本的flyway中