MySql如何利用触发器将不同数据库里的表同步到同一数据库的一张表中

1.在开发过程中,我们经常会遇到需要在不同的数据库中,针对某两张表的数据进行查询。针对这个问题,有不同的解决办法,博主在网上看到过的方法包括利用JDBC创建两个数据源的方法或者通过存储过程设计针对另一个数据库的查询函数。在此,我们通过触发器来实现不同数据库的表,同步到同一数据库的一张表中。
2.如下图所示,我们要将不同数据库中的表同步到同一数据库的一张表中,红框为不同的两张表,test为同步后的表,首先在任一数据库中新建test表,该表所要包含的字段为我们所需要的另外两张表的字段。
在这里插入图片描述
3. 如下图所示,为两张表分别创建相关的触发器,如图3.1所示,随后写触发器相关代码。
在这里插入图片描述 图3.1
4.图4.1为其中一个表的触发器器,该触发器会根据时间判断test表中是否有该时间段的数据,如果没有数据,就会将触发器关联表中的数据插入到test表中,插入的字段为触发器中sql语句所选定的字段。如果有数据,则会将触发器关联的表中的数据更新到test表中。同理,另一个表的触发器如图4.2所示。根据时间判断,将相关字段同步到test表中,因为两个触发器中的判断条件都是通过所关联表中的时间字段判断的,根据数据库字段时间和当前时间进行判断,进而可以实现将两张表中同一时间发生的改变同步到test表中。
在这里插入图片描述图4.1
在这里插入图片描述图4.2

尾部附相关代码例子
CREATE DEFINER=root@localhost TRIGGER test
AFTER insert
ON systemrundata
for each row
begin
declare count INT;
select COUNT(*) into count from lm.test where time = new.time;
if count = 0 THEN
INSERT INTO lm.test(time,DL,KLSD,KL,BJSLDQ,YW,Pump1Run,Pump2Run,Pump1Fre,Pump2Fre,YL) VALUES(new.time, new.DL,new.KLSD,new.KL,new.BJSLDQ,new.YW,new.Pump1Run,
new.Pump2Run,new.Pump1Fre,new.Pump2Fre,new.YL);
else
update lm.test set DL = new.DL,KLSD = new.KLSD,KL=new.KL,BJSLDQ=new.BJSLDQ,YW=new.YW,Pump1Run=new.Pump1Run,Pump2Run=new.Pump2Run,Pump1Fre=new.Pump1Fre,
Pump2Fre=new.Pump2Fre,YL=new.YL where time =new.time;
end if;
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值