MySQL创建触发器实现统一主机下两个数据库的表同步
2016-07-05 13:44
766 查看
首先 建立要用于测试 数据库 与 表 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)
delete 和 update的话 , 就是 上面的触发器 定义的地方, 要修改 触发器名字要修改 触发器里面的 语句要修改. 比如 delete 的触发器里面, 要 delete 另外一个表 update的触发器里面, 要 update 另外一个表 至于那个标志 @disable_trigger 注意事项就是, 不要在别的地方 手动的执行 SET @disable_trigger = 1; 否则 所有的触发器,都要失效了。
原文地址:http://zhidao.baidu.com/link?url=e0CwvF_BShuLu_uSJ7VktwOOSYRxASOVu0fy0B6CYJCp6Ra9as_opFG-zlW0nBLXPoCg7zj_uLRHgrw0vqktwq
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复