mysql数据库触发器同步数据

首先检查数据源库是否支持触发器,show ENGINES,如果FEDERATED是NO,表示未开启,如需开启,再mysql配置文件中,添加federated配置到mysqld下面。

一、同服务器不同库触发器同步,这里只举例插入数据同步
source_table数据源表user库,target_table目标表user-test库
DROP TRIGGER if EXISTS test.source_table;

CREATE TRIGGER source_table

AFTER INSERT ON test.source_table

for EACH ROW

BEGIN

  INSERT INTO `user-test`.target_table(id,name,age,gender,phone)

  VALUES(new.id,new.name,new.age,new.gender,new.phone);

END;

新增插入数据后,目标数据库数据发生变化,随之新增一条数据

INSERT INTO test.source_table(id,material_type,material_texture,replace_texture,serial_number)

VALUES(3000,'james',2,'男',13388888888)

二、不同服务器不同库触发器同步,新增
使用CREATE SERVER创建FEDERATED表

CREATE SERVER fedlink

FOREIGN DATA WRAPPER mysql

OPTIONS(

HOST '10.10.1.1',

PORT 6001,

USER 'user1',

PASSWORD '123@abc',

DATABASE 'user-test'

);

创建目标表

DROP TABLE if EXISTS `target_table`;

CREATE TABLE `target_table`(

id int PRIMARY KEY not null AUTO_INCREMENT,

name VARCHAR(100),

age int(100),

gender CHAR(10),

phone VARCHAR(100)

)ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='fedlink/source_table';

这里还可以用另一种方式,之所以用上面这种方式,是因为密码上有@特殊字符;

另一种方式:

DROP TABLE IF EXISTS `表名`;

CREATE TABLE `表名`  (

  字段信息

) ENGINE=InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '表描述' ROW_FORMAT = Compact ENGINE=FEDERATED  CONNECTION = 'mysql://user:password@ip:port/databaseName/tableName';

查询test库中触发器

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA='test';

注意:以上皆为双向同步数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱墩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值