我想在数据库已经存在且其中包含生产数据的情况下使用 flyway 进行数据库更新。我现在正在研究的问题(我还没有找到一个好的解决方案),如下所示:
有一个带有数字 ID 的现有数据库表,例如
创建表对象( obj_id 编号,...)
有一个序列“obj_seq”来分配新的obj_ids
在我的数据库迁移期间,我需要引入一些新对象,因此我需要新的对象 ID。但是我在开发时不知道这些将是什么 ID 号
有一个数据库触发器稍后会引用这些 ID。为了提高性能,我想避免在每次触发器运行时确定实际 ID,而是将 ID 直接放入触发器中
我想到的示例(非常简化):
- 插入对象 (obj_id, ...) 值 (obj_seq.nextval, ...)
从对偶中选择 obj_seq.currval
-> 将其存储在变量“newID”中
当 new.id = newID 时在 some_other_table 上创建触发器 ...
现在,是否可以动态确定/使用这些变量?我已经看到了 flyway 占位符,但我的理解是我不能像上面的示例那样动态设置它们。
我可以使用基于 Java 的迁移脚本并做任何我喜欢的字符串魔术 - 所以,这将是一种方法,但也许有一种更优雅的使用 SQL 的方法?
很多谢谢!
tge