数据库:sql1   sql2   .开始的时候两个数据库中的数据都是一样的,结构数据行表什么都一样,各有表:
tb1   tb2   tb3   tb4 四个表中的ID都是自增长,例如下面表,原始时都是下面这些数据:tb1                   tb2                    tb3                  tb4
id1 name1             id2  name2             id3   name3          id4 id1 id2 id3
1   aa                1     ff               1      qq            1    1  1    2
2   bb                2     gg               2      ww            2    1  2    3
3   cc                3     hh        3      ee            3    3  1    4
4   dd                4     jj               4      rr            4    2  1    1tb4中数ID是根据前三个表的ID组合起来自动生成的,所有表的ID都是自动生成。当 两个人甲、乙各去操作sql1,sql2,甲对sql1操作,乙对sql2操作。一段时间后 两个数据库中的数据各有增加,如何将sql1中新增加的数据插入到sql2中去就当做新数据插入;求高人指点!!!!!!!!!!!!存储过程最好!

解决方案 »

  1.   

    这个时候最好用except(2005以后才有),这个是集合操作,速度快。由于ID自增,没啥可比性,除非你知道何时开始出现差异,那之前的数据可以不比较,否则全部要比较:
    拿其中一个表做例子,其他的也一样,前提是结构一样:
    找出b库中不存在,但是a存在的:INSERT  INTO b.dbo.tb1
             SELECT  *
             FROM    ( SELECT    *
                       FROM      a.dbo.tb1
                       EXCEPT
                       SELECT    *
                       FROM      b.dbo.tb1
                     ) a
      

  2.   

    这里的自增列你要额外处理,不要插入,因为我具体不知道你的列是什么所以用*号代替。记得写上非自增列的列上去,然后insert那里也要一一对应
      

  3.   

    那你就把上面的*改成对应的name就可以了
      

  4.   

    在A库中的几个表中建立触发器行不?create triger tri_tb1
    on sql1.dbo.tb1
    after insert
    as begin
    insert into sql2.dbo.tb1(name)
    select name from inserted
    end
      

  5.   

    应该有很多写法,不知道lz有什么特别之处
    insert into sql2.dbo.tb1(name)
    select name from sql1.dbo.tb1 a where not exists(select * from sql2.dbo.tb1 b where a.name=b.name)