基于MYSQL触发器实现表间数据同步

Posted yangjinheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于MYSQL触发器实现表间数据同步相关的知识,希望对你有一定的参考价值。

触发器简单了解

触发器(trigger):监视某种情况,并触发某种操作,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。
触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素:

    1. 监视地点(table)
    2. 监视事件(insert/update/delete)
    3. 触发时间(after/before)
    4. 触发事件(insert/update/delete)

需求:

不同数据库的两张表的数据保持一致

思路:

基于触发器当对表1进行操作时候,将操作同步到表2

步骤:

创建一个触发器,在表1插入,更新,删除数据时候,对表2进行同样的操作

结果:

在同一个数据库连接内的不同库之间的表数据同步功能完全实现

触发器对两个表的操作有事务性


 

 

插入时触发器

DROP TRIGGER IF EXISTS `insert_Replication_Application`;
DELIMITER ;;
CREATE TRIGGER `insert_Replication_Application` AFTER INSERT ON `源库名称`.`源表名称` FOR EACH ROW
BEGIN
INSERT INTO `目的库名称`.`目的表名称` (`目的字段1`, `目的字段2`, ) VALUES (new.新的值1, new.新的值2);
END ;;
DELIMITER ;

 


 

 

更新时触发器

DROP TRIGGER IF EXISTS `update_Replication_Application`;
DELIMITER ;;
CREATE TRIGGER `update_Replication_Application` AFTER UPDATE ON `源库名称`.`源表名称` FOR EACH ROW
BEGIN
UPDATE `目的库名称`.`目的表名称` SET `目的字段1`=new.修改后的值1, `目的字段2`=new.修改后的值2, WHERE (`目的主键字段`=old.源主键字段);
END ;;
DELIMITER ;

 


 

 

删除时触发器

DROP TRIGGER IF EXISTS `delete_Replication_Application`;
DELIMITER ;;
CREATE TRIGGER `delete_Replication_Application` AFTER DELETE ON `源库名称`.`源表名称` FOR EACH ROW
BEGIN
DELETE FROM `目的库名称`.`目的表名称` WHERE (`目的主键字段`=old.源主键字段);
END ;;
DELIMITER ;

 

 文章写的不错?请扫下面作者的讨饭专用码,赞助一下。

 

技术分享图片


以上是关于基于MYSQL触发器实现表间数据同步的主要内容,如果未能解决你的问题,请参考以下文章

MySql触发器实现数据同步学习

Node.js ORM框架Sequlize之表间关系

MySQL创建触发器实现统一主机下两个数据库的表同步

sql语句之表间字段值复制遇到的一些问题--基于mysql

MySQL触发器实现两表数据同步(详解)

redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)