如何实现多个SQL数据库同样结构的表同步更新!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现多个SQL数据库同样结构的表同步更新!相关的知识,希望对你有一定的参考价值。

一台电脑上有5个数据库A1,A2,A3,A4,A5,这五个数据库里都有相同结构的表table1和table2,现在想要实现任意一个数据库中的table1\table2记录增加减少或者修改,同时更新其他4个数据库记录!
求教高手
只有这2张表的结构是一样的,有多个系统,每个系统一个数据库,这2张表每个系统都要用而且一个系统中更新,其它的要同步更新!!

在每个数据库的table1\table2都建立插入、删除、修改触发器
如在A1上
ceate trigger dbo.table1_u on A1.dbo.table1 for insert,update,delete as
IF @@rowcount = 0 RETURN

declare @no_i int -- 假设no为关键字
--declare 其他字段

declare @no_d int -- 假设no为关键字
--declare 其他字段

--赋值
select @no_i =no ,--其他值
from inserted
select @no_d =no ,--其他值
from deleted

--判断@no_d,@no_i 是否在A2,A3,A4,A5的表中存在
--1、如果@no_d,@no_i 都存在,则用新值更新A2,A3,A4,A5的talbe1
--2、如果@no_d不存在@no_i存在,则将新值插入A2,A3,A4,A5的talbe1
--3、如果@no_d存在@no_i不存在,则删除A2,A3,A4,A5的talbe1对应的值
if exists(select 1 from A2.dbo.talbe1 where no = @no_d) and
exists(select 1 from A2.dbo.talbe1 where no = @no_i)
begin
--修改A2数据库的表
end
...............................
参考技术A 倒不如写个外部程序直接判断数据库内容增加或者减少,不过很奇怪,既然表都是一样的为什么不直接只访问一个数据库呢?而且还是同一台电脑,而且要的是数据文件都一样,怕丢的话为什么不用自动备份? 参考技术B 通过触发器可以实现:
create trigger test on 数据库名A.表c
insert,delete,update
as
begin
insert into 数据库名B.表d select ....from 数据库名A.表c
update....
delete ....
参考技术C 同步复制,由特定的1个对其他多个的复制是简单的,任意1个对其他多个的同步复制恐怕很难。与其解决这个复制难题,不如修改系统的架构来的简单些 参考技术D 方法一:为每个表添加触发器。
方法二:在每个表添加数据的地方,同时写入其他数据库中的相应表。

当然最好是用第一个。

mssql如何将一个数据库中的表同步到另一个数据库中 做成事务

1 在另一个数据库中建立同样结构的副表,导入相同的数据
2 在本地数据库建立另一个数据库的相应链接
3 在本地数据库主表建立插入修改删除触发器,主表有什么变化直接写入到副表中
4当然这种方法也不是特别好,会影响本地数据库主表的性能。
参考技术A 这个用SQL 触发器来实现最好,打开企业管理器->右键点击A表->所有任务->管理触发器,然后按这个格式写:

CREATE TRIGGER InsertT ON A表 FOR INSERT
AS
insert B表(字段1,字段2,字段3)
select 字段1,字段2,字段3 from inserted

如果不用触发器,在增加表时,同时增加两个表的数据:
insert A表(字段1,字段2,字段3) values(数值,数值,数值)
insert B表(字段1,字段2,字段3) values(数值,数值,数值)

以上是关于如何实现多个SQL数据库同样结构的表同步更新!的主要内容,如果未能解决你的问题,请参考以下文章

在SQL中 如何实现不同数据库的两张表的同步

特定场景下SQL的优化

如何实现两个Oracle数据库的数据同步?

PLSQLDeveloper来实现不同数据库的表结构以及表数据同步

SQL VIEW(视图)

鉴于oracle中的表结构相同,如何从tableA更新tableB中数据不相同的行?