触发器简单了解
触发器(trigger):监视某种情况,并触发某种操作,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。
触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素:
- 监视地点(table)
- 监视事件(insert/update/delete)
- 触发时间(after/before)
- 触发事件(insert/update/delete)
需求:
不同数据库的两张表的数据保持一致
思路:
基于触发器当对表1进行操作时候,将操作同步到表2
步骤:
创建一个触发器,在表1插入,更新,删除数据时候,对表2进行同样的操作
结果:
在同一个数据库连接内的不同库之间的表数据同步功能完全实现
触发器对两个表的操作有事务性
插入时触发器
DROP TRIGGER IF EXISTS `insert_Replication_Application`; DELIMITER ;; CREATE TRIGGER `insert_Replication_Application` AFTER INSERT ON `源库名称`.`源表名称` FOR EACH ROW BEGIN INSERT INTO `目的库名称`.`目的表名称` (`目的字段1`, `目的字段2`, ) VALUES (new.新的值1, new.新的值2); END ;; DELIMITER ;
更新时触发器
DROP TRIGGER IF EXISTS `update_Replication_Application`; DELIMITER ;; CREATE TRIGGER `update_Replication_Application` AFTER UPDATE ON `源库名称`.`源表名称` FOR EACH ROW BEGIN UPDATE `目的库名称`.`目的表名称` SET `目的字段1`=new.修改后的值1, `目的字段2`=new.修改后的值2, WHERE (`目的主键字段`=old.源主键字段); END ;; DELIMITER ;
删除时触发器
DROP TRIGGER IF EXISTS `delete_Replication_Application`; DELIMITER ;; CREATE TRIGGER `delete_Replication_Application` AFTER DELETE ON `源库名称`.`源表名称` FOR EACH ROW BEGIN DELETE FROM `目的库名称`.`目的表名称` WHERE (`目的主键字段`=old.源主键字段); END ;; DELIMITER ;
文章写的不错?请扫下面作者的讨饭专用码,赞助一下。