数据库表记录的一种同步方案
作者:网络转载 发布时间:[ 2014/1/20 13:19:15 ] 推荐标签:测试技术 开发
涉及到多个数据库之间的同步,由于某些原因(某些数据库只需要表内部分数据;数据库类型目前为MySQL,但可能后期部分数据库采用Oracle),不能采用MySQL的主从同步机制。由于对同步的实时性要求不高,记录个数也不是太多,另外做了一种简易的同步方案。
一、 通过触发器生成数据表版本号
将数据表的每次更新时间记录到另一张版本表中。
drop table if exists Tab_Version_Tab;
create table Tab_Version_Tab
(
Tab_Name char(40) not null, #表名 #
TrigVersion int null, #触发版本号#
SourceVersion int null, #源版本号#
LocalVersion int null, #本地版本号#
constraint pk_Tab_Version_Tab primary key(Tab_Name)
);
delete from Tab_Version_Tab;
insert into Tab_Version_Tab values("Demo1_Tab", 0, 0, 0);
触发器脚本如下:
drop trigger if exists trig_insert_Demo1_Tab;
delimiter |
create trigger trig_insert_Demo1_Tab after insert on Demo_Tab
for each row
begin
update Tab_Version_Tab set TrigVersion=UNIX_TIMESTAMP() where Tab_Name = 'Demo1_Tab';
end;
|
delimiter ;
同样可以建立update,delete的触发器。郁闷的是MySQL的触发器只支持for each row,效率会较低。

sales@spasvo.com