我们的表(Oracle数据库11g)具有由序列生成的PK。这些ID在不同环境中不同步。 如果我对表A进行了更改,我必须创建一个忽略PK并使用自然键的脚本。 因此,例如,如果在DEV中,我更新了ID为102843和paret代码YU9的部件,我无法针对ID 102843的prod发出更新。我必须发出部件代码YU9的更新。 随着更多表的参与,这变得越来越复杂,因为表基于ID加入。
无论如何,我们一直在寻找一种可以为此生成sql脚本的工具,让我的生活更少成为一场噩梦。 Fly Flyway? 顺便说一句,如果有人知道另一个这样的产品,我很想听听它(我已经和Redgate等人谈过了) (也就是说,不,我无法控制这些序列,也无法保持它们的排列。这就是它的方式)
澄清:我不是在询问我的系统应该如何工作。这是它的工作原理,而且不会很快改变。我只是问飞路产品是否可以提供帮助。
答案 0 :(得分:1)
经过多次争论,我们最终摆脱了其他环境中的序列。 基本上,我们将PROD克隆到DEV。然后我们在PROD中删除了序列,现在只需使用DEV中序列生成的ID将记录从DEV移动到PROD。 换句话说,我们只是摆脱了他们的问题。
答案 1 :(得分:0)
听起来您有跨环境复制的参考数据。为什么要使用序列?只需指定手动ID,您的问题就会消失。
您可以发出最终迁移,根据自然键重新分配手动ID,然后删除序列。
答案 2 :(得分:0)
回到问题(标题中提到):flyway可以跨数据库处理不同的ID吗? 我们有两个不同的数据库和不同的表,但是我们想要将第一个数据库的一些表/列映射到第二个数据库的某些其他表/列。主要问题是,ID不一样。那么有没有办法定义如何映射id,例如一方面我们有一个复合主键,但另一方面我们有一个自动递增的id?