0

我们的表(Oracle 数据库 11g)有一个由序列生成的 PK。这些 ID 在不同环境中不同步。如果我对表 A 进行了更改,我必须创建一个忽略 PK 并使用自然键的脚本。因此,例如,如果在 DEV 中,我使用 ID 102843 和 paret 代码 YU9 更新了一个零件,我无法针对 ID 102843 的 prod 发布更新。我必须发布零件代码 YU9 的更新。由于表是基于 ID 连接的,因此随着涉及的表越来越多,这变得越来越复杂。

无论如何,我们一直在寻找一种可以为此生成 sql 脚本并使我的生活不再是噩梦的工具。飞路可以吗?顺便说一句,如果有人知道另一种这样的产品,我很想听听(我已经和 Redgate 等谈过了(另外,不,我无法控制这些序列,也不能让它们保持一致。这只是事情是这样的)

澄清:我不是在问我的系统应该如何工作。这就是它的工作方式,并且不会很快改变。我只是问flyway产品是否有帮助。

4

3 回答 3

1

经过多次争论,我们最终摆脱了其他环境中的序列。基本上,我们将 PROD 克隆到 DEV。然后我们摆脱了 PROD 中的序列,现在只需使用 DEV 中的序列生成的 ID 将记录从 DEV 移动到 PROD。
或者,换句话说,我们只是摆脱了他们的问题。

于 2015-02-11T19:33:27.937 回答
0

听起来您有跨环境复制的参考数据。为什么要使用序列?只需分配手动 ID,您的问题就会消失。

您可以发出最终迁移,根据自然键重新分配手动 ID,然后删除序列。

于 2012-10-24T06:50:08.237 回答
0

回到这个问题(在标题中提到):flyway 可以跨数据库处理不同的 ID 吗?我们有两个具有不同表的不同数据库,但我们想将第一个数据库的一些表/列映射到第二个数据库的一些其他表/列。主要问题是,ID 不一样。那么有没有一种方法来定义应该如何映射 id,例如,一方面我们有一个复合主键,但另一方面我们有一个自动递增的 id?

于 2013-06-20T12:52:18.240 回答