mysql 触发器实现两个表的数据同步
mysql通过触发器实现两个表的同步
目前,在本地测试成功。
假设本地的两个数据库a和b,a下有表table1(id, val) b下有表table2(id, val)
假设希望当table1中数据更新,table2中数据同步更新。
代码:
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER `a`.`触发器名` BEFORE UPDATE
ON `a`.`table1`
FOR EACH ROW BEGIN
IF new.id!=old.id THEN
UPDATE `b`.`table2` SET `b`.`table2`.id=new.id WHERE `b`.`table2`.val=old.val;
END IF;
END$$
DELIMITER ;
网上找了很多代码,在phpadmin中运行都不成功,总是语法错误,phpmyadmin也不能可视化建立触发器,所以找了另一个mysql管理工具,SQLyog。这个工具比较好,java写的,可以通过界面创建触发器,然后再把代码拷到phpmyadmin中运行,成功!
相关推荐
-
MySQL实现两张表数据的同步
mysql通过触发器实现两个表的同步,需要了解的朋友可以看一下. 有两张表A和B,要求往A里面插入一条记录的同时要向B里面也插入一条记录,向B里面插入一条记录的同时也向A插入一条记录.两张表的结构不同,需要将其中几个字段对应起来.可以用下面的触发器实现. 表A的触发器: begin set @disable=1; if @disable=1 and NOT EXISTS(SELECT 1 FROM tableB where ID=new.ID) then insert into tableB (
-
MySQL 5.7双主同步部分表的实现过程详解
前言 最近遇到一个需求,由于公司自身业务,两个数据库之间某些表需要实时双向同步数据,且其中任何一台数据库宕机都不会影响另外一台数据库,这里记录一下自己的技术调研,以便后期重构中使用.下面话不多说了,来一起看看详细的介绍吧. 安装MySQL5.7 推荐直接进官网 https://dev.mysql.com 下载yum源的方式安装,毕竟安全又省事. wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm y
-
mysql 触发器实现两个表的数据同步
mysql通过触发器实现两个表的同步 目前,在本地测试成功. 假设本地的两个数据库a和b,a下有表table1(id, val) b下有表table2(id, val) 假设希望当table1中数据更新,table2中数据同步更新. 代码: DELIMITER $$ CREATE /*[DEFINER = { user | CURRENT_USER }]*/ TRIGGER `a`.`触发器名` BEFORE UPDATE ON `a`.`table1` FOR EACH ROW BEGIN I
-
MYSQL使用Union将两张表的数据合并显示
使用UNION操作符 union:用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多个 SELECT 语句会删除重复的数据. 使用union操作符会将多张表中相同的数据取值一次,如果想将表1和表2中的值完整的显示出来,可以使用union all. 演示 小伙伴们自行创建一下表. 表1数据如下: 表2数据如下: OK,表数据已经创建完成,一共五条数据,接下来我们去看一看union 和 union all 的使用. 使用union 看一下效果: select t1.id id, t
-
MySQL如何实现两张表取差集
目录 MySQL两张表取差集 求差集 SQL 脚本 MySQL查两个表之间的数据差集 SQL LEFT JOIN 关键字 总结 MySQL两张表取差集 业务场景如下: 人员表中有证件号.手机号字段,这两个字段因为涉及到个人隐私问题,因此加密存储,有另外一张解密表可以和人员表进行关联,查出解密后的证件号和手机号,现在需要统计出人员表中有多少没有加密的数据,进行再次加密处理,这个时候,考虑到的就是求两张表的差集,来找出未加密的人员. 求差集 SQL 脚本 select p.* from person
-
数据库中两张表之间的数据同步增加、删除与更新实现思路
分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加: 如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. 复制代码 代码如下: CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END
-
MySQL 两张表数据合并的实现
有一个需求, 需要从数据库中导出两张表的数据到同一个excel中 鉴于是临时的业务需求, 直接使用Navicat 进行查询并导出数据. 数据涉及到三张表 CREATE TABLE `bigdata_qiye` ( `id` bigint(64) NOT NULL COMMENT '主键', `tenant_id` varchar(12) DEFAULT '000000' COMMENT '租户ID', `registration_type` int(2) DEFAULT NULL COMMENT
-
Mysql 如何实现多张无关联表查询数据并分页
Mysql 多张无关联表查询数据并分页 功能需求 在三张没有主外键关联的表中取出自己想要的数据,并且分页. 数据库表结构 水果表: 坚果表: 饮料表: 数据库随便建的,重在方法. 主要使用UNION ALL 操作符 UNION ALL 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION ALL内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同 ; 另外,UNION ALL结果集中的列名总是等于 U
-
MySQL特定表全量、增量数据同步到消息队列-解决方案
目录 1.原始需求 2.解决方案 3.canal介绍.安装 canal的工作原理 架构 安装 4.验证 1.原始需求 既要同步原始全量数据,也要实时同步MySQL特定库的特定表增量数据,同时对应的修改.删除也要对应. 数据同步不能有侵入性:不能更改业务程序,并且不能对业务侧有太大性能压力. 应用场景:数据ETL同步.降低业务服务器压力. 2.解决方案 3.canal介绍.安装 canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了M
-
Mysql如何同时交换两个表的表名详解
Mysql同时交换两个表的表名 表重命名有两种方式,所以交换两表名也有两种方式: 1 . lock tables t1 write ,t2 write; alter table t1 rename to t3; alter table t2 rename to t1; alter table t3 rename to t2; unlock tables; 2 . rename table t1 to t3,t2 to t1,t2 to t3; MySQL命令rename:修改表名 rename命
-
MySQL数据库线上修改表结构的方法
目录 一.MDL元数据锁 1.什么是MDL锁 2.MDL锁的问题 二.如何线上修改MySQL表结构 一.MDL元数据锁 在修改表结构之前,先来看下可能存在的问题. 1.什么是MDL锁 MySQL有一个把锁,叫做MDL元数据锁,当对表修改的时候,会自动给表加上这把锁,也就是不需要自己显式使用. 当对表做增删改查的时候,加的是MDL读锁 当对表结构做变更修改的时候,加的是MDL写锁 读与读之间不互斥,读与写,写与写之间互斥,因此 当有一个线程对表执行增删盖茶的时候,会阻塞掉别的线程对表结构修改的请求
随机推荐
- 分享Android仿刮奖效果控件
- Javascript 匿名函数及其代码模式原理
- 微信小程序城市定位的实现实例(获取当前所在国家城市信息)
- 使用正则表达式的格式化与高亮显示json字符串
- Nginx PHP-Fcgi中因PHP执行时间导致504 Gateway Timeout错误解决记录
- Java数据库连接池之c3p0简介_动力节点Java学院整理
- oracle中文乱码的解决方法
- javascript获得当前的信息的一些常用命令
- Javascript中valueOf与toString区别浅析
- 比较简单实用的使用正则三种版本的js去空格处理方法
- php数组对百万数据进行排除重复数据的实现代码
- python使用marshal模块序列化实例
- php中抓取网页内容的实例详解
- H5用户注册表单页 注册模态框!
- PHP读取文件并可支持远程文件的代码分享
- win2000关机命令的批处理bat
- SQL学习笔记二 创建表、插入数据的语句
- 回车直接实现点击某按钮的效果即触发单击事件
- 用注册表修改2k/XP默认刷新率
- 在WordPress中实现发送http请求的相关函数解析