【发布时间】:2016-01-28 12:59:53
【问题描述】:
让我的表格更简单一点有点麻烦,让我解释一下:
带输入的表结构:
OLD_KEY | NEW KEY
4536 4566
4566 4977
4321 10290
5423 8920
我正在从一个来源获取数据,即在几个表中更改我的 PK(序列号);之后,我需要将所有这些表更新为新的序列号。
我的问题是,数据可以像示例中那样出现,而不是简单的更新,并且对于相同的旧键更改两次或更多次,例如(在示例中)4536 首先更改为 4566,然后再次更改为 4977。
目前这迫使我使用游标,它将按第一个键和 ETC 排序逐行更新每个表...
以前还好,但最近数据量成倍增长,使得这个过程非常繁重,占用了大量资源。
我的问题是:我需要消除所有那些必须更新两次或更多次的键,只更新一次,这意味着 - 对于上面的示例,输出如下:
OLD_KEY | NEW_KEY
4536 4977
4321 10290
5423 8920
考虑过使用先验和开始的分层函数.. 但是我从哪里开始呢?
提前致谢。
【问题讨论】:
标签: sql oracle plsql hierarchy