merge into 没有序列问题插入问题 max(id)
Posted uniles
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了merge into 没有序列问题插入问题 max(id)相关的知识,希望对你有一定的参考价值。
最近接到一个需求,要写一个脚本来同步两个库的数据
前提:没有序列,所以主键自增 不能使用序列。
而代码里对该表的数据插入的操作,主键是使用max(id)+1来实现的。
merge into 执行insert操作时,里面的value值不能使用子查询。所以要在using中把主键的值查出来。
但是不能直接使用 using (select (select max(id)+1 from my_table@dblink) nextId,t.* from my_table t ,这样所有新插入的id都是max(id)+1。
我们使用rownum来区分。
1 merge into mp_up_apply@TO_QWPT t1 2 using (select (select max(id) from mp_up_apply@TO_QWPT)+rownum nextId,t.* from mp_up_apply t where app_class=2) t2 3 on (t1.POWER_ID = t2.POWER_ID) 4 when not matched then 5 insert(t1.ID, 6 t1.DEVELOP_APP_ID, 7 t1.POWER_ID) 8 values(t2.nextId, 9 t2.DEVELOP_APP_ID, 10 t2.POWER_ID);
以上是关于merge into 没有序列问题插入问题 max(id)的主要内容,如果未能解决你的问题,请参考以下文章