我们有一个使用 QueryDSL 的 Java 应用程序,用于使用 Postgres 管理 SQL 查询。我们希望以最有效的方式简单地重命名列。 在 Postgres 中这很简单:
ALTER TABLE my_table RENAME COLUMN old_name TO new_name;
为了在应用程序不停机的情况下完成这项工作,我希望能够执行以下操作:
old_name
和 new_name
(在 SELECT 和 INSERT/UPDATE 中)感到满意old_name
的引用。但是我不知道是否有任何方法可以使用 QueryDSL 实现步骤 1。例如。某种注释或行为仅使用
old_name
和 new_name
(如果存在),否则使用另一个。
这有可能吗?
如果没有,看起来实现简单的数据库列重命名的唯一方法是完全复制该列,跨迁移数据,使应用程序写入两者,然后最终删除旧的列。当然有更简单的方法!
看起来答案是否定的,这对于 QueryDSL 来说是不可能的。所以唯一的方法是:
来源:https://github.com/ankane/strong_migrations?tab=readme-ov-file#renaming-a-column(Ruby on Rails gem,但原则普遍适用。)