当按照逻辑从表 SOURCE 添加新数据到 TARGET 时,我尝试分配一个
id
:
id
id
代码如下:
select case when ep.id is not null then ep.id else sequence.nextval
...
from SOURCE p left join TARGET ep on p.otherKey = ep.otherKey;
我的问题是,序列总是被评估,这意味着 id 之间的差距会很大,因为有很多更新,但只有很少的新记录。
问题:如何更改此
id
创建,使其仍使用相同的序列,但避免每次都调用该序列?
还没有尝试过任何事情,因为我不知道在这种情况下会发生什么。
一种方法是在调用
sequence.nextval
: 之前拆分数据
select ep.id
...
from SOURCE p
INNER join TARGET ep
on p.otherKey = ep.otherKey
UNION ALL
select sequence.nextval
...
from SOURCE p
left join TARGET ep
on p.otherKey = ep.otherKey
where ep.OtherKey IS NULL;