美文网首页
同一mysql程序,不同数据库,表同步

同一mysql程序,不同数据库,表同步

作者: 夜月河色 | 来源:发表于2019-10-17 14:29 被阅读0次

场景描述

当同一个mysql程序中,有两个数据库test_main(主数据库)和test_follow(从数据库),都存在user表,需要对user表进行同步,打开test_main数据库,在里面创建如下触发器:

1、当两张user表字段一样且有id字段时

a、插入同步

CREATE TRIGGER `user_syn_insert` AFTER INSERT ON `user` FOR EACH ROW BEGIN
    INSERT INTO test_follow.user SELECT * FROM `user` WHERE `user`.id=new.id;
END

b、更新同步

CREATE TRIGGER `user_syn_update` AFTER UPDATE ON `user` FOR EACH ROW BEGIN
    DELETE FROM test_follow.user where `id`=old.id;
    INSERT INTO test_follow.user SELECT * FROM `user` WHERE `user`.id=new.id;
END

c、删除同步

CREATE TRIGGER `user_syn_delete` BEFORE DELETE ON `user` FOR EACH ROW BEGIN
    DELETE FROM test_follow.student where `id`=old.id;
END

2、当两张user表字段不一样且有id字段时,或只同步指定字段时

a、插入同步

CREATE TRIGGER `user_syn_insert` AFTER INSERT ON `user` FOR EACH ROW BEGIN
    INSERT INTO test_follow.user(`id`,`name`,`age`) VALUES(new.id,new.name,new.age);
END

b、更新同步

CREATE TRIGGER `user_syn_update` AFTER UPDATE ON `user` FOR EACH ROW BEGIN
    UPDATE test_follow.user SET `name`=new.name,`age`=new.age WHERE`id`=new.id;
END

c、删除同步

CREATE TRIGGER `user_syn_delete` BEFORE DELETE ON `user` FOR EACH ROW BEGIN
    DELETE FROM test_follow.student where `id`=old.id;
END

3、对于只有两个字段的简单中间表,是没有id字段的,这时建议统一使用相同的字段名,比如a_id,b_id。(对于有其他字段的中间表,建议给表增设id字段)

a、插入同步

CREATE TRIGGER `ux_syn_insert` AFTER INSERT ON `ux` FOR EACH ROW BEGIN
    INSERT INTO test_follow.ux (a_id,b_id) VALUES (new.a_id,new.b_id);
END

b、更新同步

CREATE TRIGGER `ux_syn_update` AFTER UPDATE ON `ux` FOR EACH ROW BEGIN
    UPDATE test_follow.ux set a_id=new.a_id,b_id=new.b_id WHERE a_id=old.a_id and b_id=old.b_id;
END

c、删除同步

CREATE TRIGGER `ux_syn_delete` AFTER DELETE ON `ux` FOR EACH ROW BEGIN
    DELETE FROM test_follow.ux where a_id=old.a_id and b_id=old.b_id;
END

4、最后,关于删除触发器的sql语句

DROP TRIGGER `user_syn_delete`;

相关文章

  • 同一mysql程序,不同数据库,表同步

    场景描述 当同一个mysql程序中,有两个数据库test_main(主数据库)和test_follow(从数据库)...

  • kettle学习笔记(五)——kettle输出步骤

    一、概述 数据库表:• 表输出• 更新,删除,插入/更新• 批量加载(mysql,oracle)• 数据同步文件:...

  • SQL视图、触发器、存储过程

    数据库视图 数据库中一张虚拟的表,允许不同用户或者应用程序以不同方式查看同一张表中的数据。 创建视图 使用视图 删...

  • 8-2 分片准备

    类似mysql分区表:不同点是:分区表是 同一个节点上同一个数据库内建立的分片是: 分了以后存放在不同的物理节点上...

  • Mysql学习——数据库基础操作(1)

    Mysql创建数据库Mysql删除数据库Mysql创建表Mysql删除表Mysql添加表数据Mysql修改表数据M...

  • MySQL 同步复制及高可用方案总结

    MySQL 同步复制及高可用方案总结 1.前言 mysql作为应用程序的数据存储服务,要实现mysql数据库的高可...

  • DBLink增量更新

    第一步:建立DBLink 两个数据库,源数据库test中的表数据同步到目标数据库scott的同一个表(表不相同也可...

  • Mysql 复制架构

    Mysql 复制架构 数据库复制的其实就是数据的同步,Mysql数据库基于binary log日志进行数据增量同步...

  • MySql之自动同步表结构

    MySql之自动同步表结构 开发痛点 在开发过程中,由于频繁的修改数据库的字段,导致rd和qa环境的数据库表经常不...

  • excel表数据的导入导出

    从excel表导入MySQL数据库 从MySQL数据库写入excel表 PostgreSQL可参考:

网友评论

      本文标题:同一mysql程序,不同数据库,表同步

      本文链接:https://www.haomeiwen.com/subject/mmgmmctx.html