首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

不同数据库查找插入更新,求方法,求大侠指点!多谢!

2012-12-18 
不同数据库查找插入更新,求方法,求大侠指点!谢谢!!!数据库:sql1sql2.开始的时候两个数据库中的数据都是一

不同数据库查找插入更新,求方法,求大侠指点!谢谢!!!
数据库: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    1

tb4中数ID是根据前三个表的ID组合起来自动生成的,所有表的ID都是自动生成。

当 两个人甲、乙各去操作sql1,sql2,甲对sql1操作,乙对sql2操作。一段时间后 两个数据库中的数据各有增加,如何将sql1中新增加的

数据插入到sql2中去就当做新数据插入;求高人指点!!!!!!!!!!!!存储过程最好!
[最优解释]
这个时候最好用except(2005以后才有),这个是集合操作,速度快。由于ID自增,没啥可比性,除非你知道何时开始出现差异,那之前的数据可以不比较,否则全部要比较:
拿其中一个表做例子,其他的也一样,前提是结构一样:
找出b库中不存在,但是a存在的:


INSERT  INTO b.dbo.tb1
         SELECT  *
         FROM    ( SELECT    *
                   FROM      a.dbo.tb1
                   EXCEPT
                   SELECT    *
                   FROM      b.dbo.tb1
                 ) a

------其他解决方案--------------------


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

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

列不会增加  就数据增加啊  不要去增加列了
那你就把上面的*改成对应的name就可以了
[其他解释]
在A库中的几个表中建立触发器行不?

create triger tri_tb1
on sql1.dbo.tb1
after insert
as begin
insert into sql2.dbo.tb1(name)
select name from inserted
end

[其他解释]
应该有很多写法,不知道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)
[其他解释]
引用:
这里的自增列你要额外处理,不要插入,因为我具体不知道你的列是什么所以用*号代替。记得写上非自增列的列上去,然后insert那里也要一一对应


列不会增加  就数据增加啊  不要去增加列了
[其他解释]
欢迎来讨论!!!
[其他解释]
引用:
在A库中的几个表中建立触发器行不?
SQL code?12345678create triger tri_tb1on sql1.dbo.tb1after insertas begininsert into sql2.dbo.tb1(name)select name from insertedend

后面想想,理解有误,应该是这个才行

热点排行
Bad Request.