序列和分区的版本化或可重复脚本 - Flyway?
Versioned or Repeatable Scripts for Sequence & Partitions - Flyway?
我有 SQL 个用于创建分区函数和分区方案的脚本。我希望通过 flyway 脚本处理迁移。我想知道这些 SQL 脚本是否可以被视为可重复脚本或版本化脚本?
同样,我有用于创建 SEQUENCE 的脚本,这应该被视为版本化脚本还是可重复脚本?
只有在您尝试创建函数之前检查该函数是否存在,您才能将其设为可重复脚本。否则,它会尝试在每次部署时创建它,从而导致错误。大致如下:
IF NOT EXISTS( SELECT * FROM sys.partition_functions WHERE name = 'MyFunction' )
BEGIN
CREATE PARTITION FUNCTION...
END
您对 SEQUENCE 执行相同的操作,但您想在此处查找:sys.sequences。就是这样。
尽管我可能不会使 SEQUENCE 或 PARTITION 可重复。它们通常只创建一次,然后就完成了。但是,我完全可以想象在这样的情况下,您要对多个系统进行各种不同类型的部署,让这些东西可以重复,以确保它始终存在,无论版本如何,这是一个好主意。
我有 SQL 个用于创建分区函数和分区方案的脚本。我希望通过 flyway 脚本处理迁移。我想知道这些 SQL 脚本是否可以被视为可重复脚本或版本化脚本?
同样,我有用于创建 SEQUENCE 的脚本,这应该被视为版本化脚本还是可重复脚本?
只有在您尝试创建函数之前检查该函数是否存在,您才能将其设为可重复脚本。否则,它会尝试在每次部署时创建它,从而导致错误。大致如下:
IF NOT EXISTS( SELECT * FROM sys.partition_functions WHERE name = 'MyFunction' )
BEGIN
CREATE PARTITION FUNCTION...
END
您对 SEQUENCE 执行相同的操作,但您想在此处查找:sys.sequences。就是这样。
尽管我可能不会使 SEQUENCE 或 PARTITION 可重复。它们通常只创建一次,然后就完成了。但是,我完全可以想象在这样的情况下,您要对多个系统进行各种不同类型的部署,让这些东西可以重复,以确保它始终存在,无论版本如何,这是一个好主意。