我有两数据库base_a、base_b,数据表一样都有user表和wage表,现在想把base_b的记录挪到base_a里。表结构大致如下:(两个库的user表ID都使用序列)user表              wage表ID  username        wage  user_id
101    xx           3000    101
202    yy           5000    202这样的语句如何写?

解决方案 »

  1.   

    create database link tosql2k connect to cyx identified by cyx using 'sql2k';
    建立dblink,然后就可以像同一个数据库一样操作,
    insert into user select * from user@tosql2k;
    insert into wage select * from wage@tosql2k
      

  2.   

    如果是在同一台电脑上的不同用户之间的话可以这样写:
    insert into user select * from UserB.user如果是不同电脑上不同用户之间的话,可以根据服务名来进行定位
    先配置服务名进行数据库连接
    insert into user select * from UserB.user@服务名 where ……
      

  3.   

    是同一电脑上不同用户。我问题不是跨用户怎么操作,而是序列的问题。
    user表的id是取序列得到的,那么在挪新记录的话user表的id新生成,那么wage表的user_id如何相应的也改成新user记录的id值呢?
      

  4.   

    按照eric的方法用query实现是可行的 即使你这里有parentkey关联
    但是有前提条件就是
    1.dest database的两个表里面没有重复ID的数据
    2.你的dest database没有对于这两个表的insert时的利用sequence来生成id的trigger如果以上两个条件都不符合你就只能用stored procedure来实现了 里面根据你的业务需求加入逻辑来判断遇到重复数据该怎么处理这其实是一个最典型的database archiving的例子 如果自己不想写可以找一些archiving工具来实现
    我推荐你使用FlexNet Archiving 最新版本1.3.0.2 
    hoho 
    做一下广告
      

  5.   

    to komushi(小虫) ,我挪记录同时还想保持base_a库的序列连续,所以在插入表的时候我认为应该写个触发器什么的来修改wage表的user_id字段为新序列号。
    我就是在这儿遇到点困难。