读书人

不同数据库查找插入更新求方法求大

发布时间: 2012-12-18 12:43:41 作者: rapoo

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

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

读书人网 >SQL Server

热点推荐