标签: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);
标签:tab dev 有序 col 同步 insert where ble app
原文地址:https://www.cnblogs.com/uniles/p/12155508.html