我们的表(Oracle数据库11g)有一个由序列生成的PK。这些in在不同环境中不同步。如果我对表A进行了更改,我必须创建一个忽略PK并使用自然键的脚本。因此,例如,如果在DEV中,我更新ID为102843且paret代码为YU9的零件,则我无法针对ID为102843的prod发出更新。我必须发布部件代码YU9的更新。随着涉及到更多的表,这一点变得越来越复杂,因为表是基于ID连接的。
无论如何,我们一直在寻找一种工具,可以为此生成sql脚本,并使我的生活不再像噩梦一样。Flyway可以吗?顺便说一句,如果有人知道另一个这样的产品,我很想听听(我已经和Redgate等人谈过了。)(另外,不,我无法控制这些序列,也不能让它们保持一致。这就是它的方式)
澄清:我不是在问我的系统应该如何工作。这就是它的工作方式,这在短期内是不会改变的。我只是想问一下flyway产品是否能帮上忙。
发布于 2015-02-11 19:33:28
经过多次争论,我们最终摆脱了其他环境中的序列。基本上,我们将PROD克隆到DEV。然后,我们删除了PROD中的序列,现在只需使用由DEV中的序列生成的ID将记录从DEV移动到PROD。
或者,换句话说,我们只是简单地摆脱了它们的问题。
发布于 2012-10-24 06:50:08
这听起来像是在环境中复制了参考数据。为什么要使用序列呢?只需分配手动ID,您的问题就会消失。
您可以发出最终迁移,根据自然密钥重新分配手动ID,然后删除序列。
发布于 2013-06-20 12:52:18
回到问题(在标题中提到):flyway可以跨数据库处理不同的ID吗?我们有两个不同的数据库,具有不同的表,但是我们希望将第一个数据库的一些表/列映射到第二个数据库的其他一些表/列。主要问题是,ids是不一样的。那么,有没有一种方法来定义id应该如何映射,例如,一方面我们有一个复合主键,但另一方面我们有一个自动递增的id?
https://stackoverflow.com/questions/13035078
复制相似问题