【问题标题】:Flyway-Add a column to all tables containing a specified sufifix in the nameFlyway-在名称中包含指定后缀的所有表中添加一列
【发布时间】:2021-05-31 06:41:06
【问题描述】:

是否可以使用 Flyway 向名称以特定子字符串结尾的所有表添加一列?为了更好地了解我要解决的问题,我将在下面留下一个示例:

在我的数据库中,我有这两个表 saft_2020_1_111_nc_generalledgerentriestotalssaft_2017_2_112_nc_generalledgerentriestotals,它们的名称都以 generalledgerentriestotals 结尾。

有什么方法可以让我的迁移将列添加到两个表中? 为每个表进行迁移不是一种选择,因为可能有 N 个表满足此要求,因此手动为每个表进行迁移将非常低效。

我使用的 MySQL 有数据库,但如果可能的话,迁移过程最好是不可知的

【问题讨论】:

    标签: java mysql spring-boot migration flyway


    【解决方案1】:

    你应该能够得到所有的表名

    SELECT table_name FROM information_schema.tables where table_name like '%generalledgerentriestotals';
    

    然后在您的飞行路线中,您可以遍历此结果集并使用 ALTER TABLE 添加列;

    我不确定你会如何做到这一点,因为获取表的查询会因每个提供商而异。

    【讨论】:

    • 所以我的迁移应该使用 java 类来完成?
    • 对于不可知论者,我可以使用 liquibase,但不可能自动更改带有该后缀的所有表
    • @Fabio 我建议为此使用基于 SQL 的迁移,而不是基于 Java 的迁移。 flywaydb.org/documentation/concepts/migrations
    • 我一直在使用 SQL 迁移。但是如何循环遍历结果集?
    猜你喜欢
    • 2021-05-29
    • 2011-06-18
    • 2022-01-09
    • 2016-12-29
    • 2013-07-25
    • 2021-12-16
    • 2011-04-05
    • 2020-11-24
    • 2023-01-05
    相关资源
    最近更新 更多