mysql两表桥接同步

mysql两表桥接同步,第1张

1、通过以下sql语句查看mysql是否安装了federated插件。

2、找到计算机上mysql的my.ini配置文件,在[mysqld]最后添加federated即可,添加完成,重启mysql服务再次查询该引擎状态为YES。

3、在数据库A所对应的服务器上创建桥接表.表名与数据库b中需要同步的表名一致。

4、在数据库A所对应的服务器上创建触发器

5、先执行第三步的sql再执行第四部的sql。然后修改数据库A中表的数据,数据库B中表的数据会发生相同的变化。

首先,建立要用于测试的 数据库 与 表。

create database a

create database b

use a

create table table1(id int, val int)

use b

create table table2(id int, val int)

然后建触发器

use a

DELIMITER //

CREATE TRIGGER tr_Insert_t1

AFTER INSERT ON table1

FOR EACH ROW

BEGIN

-- 检查当前 环境,避免递归.

IF @disable_trigger IS NULL THEN

-- 设置禁用触发器标志.

SET @disable_trigger = 1

-- 插入目标表

INSERT INTO

b.table2

VALUES

(new.id, new.val)

-- 恢复禁用触发器标志.

SET @disable_trigger = NULL

END IF

END

//

DELIMITER

use b

DELIMITER //

CREATE TRIGGER tr_Insert_t2

AFTER INSERT ON table2

FOR EACH ROW

BEGIN

-- 检查当前 环境,避免递归.

IF @disable_trigger IS NULL THEN

-- 设置禁用触发器标志.

SET @disable_trigger = 1

-- 插入目标表

INSERT INTO

a.table1

VALUES

(new.id, new.val)

-- 恢复禁用触发器标志.

SET @disable_trigger = NULL

END IF

END

//

DELIMITER

测试执行效果:

mysql>use b

Database changed

mysql>insert into table2 values(2,2)

Query OK, 1 row affected (0.01 sec)

mysql>use a

Database changed

mysql>insert into table1 values (1, 1)

Query OK, 1 row affected (0.00 sec)

mysql>select * from table1

+------+------+

| id | val |

+------+------+

|2 |2 |

|1 |1 |

+------+------+

2 rows in set (0.00 sec)

mysql>select * from b.table2

+------+------+

| id | val |

+------+------+

|2 |2 |

|1 |1 |

+------+------+

2 rows in set (0.00 sec)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6109313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存