码迷,mamicode.com
首页 > 其他好文 > 详细

merge into 没有序列问题插入问题 max(id)

时间:2020-01-06 14:56:56      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:tab   dev   有序   col   同步   insert   where   ble   app   

最近接到一个需求,要写一个脚本来同步两个库的数据

前提:没有序列,所以主键自增 不能使用序列。

           而代码里对该表的数据插入的操作,主键是使用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)

标签:tab   dev   有序   col   同步   insert   where   ble   app   

原文地址:https://www.cnblogs.com/uniles/p/12155508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!