美文网首页
Mysql触发器实现两表同步

Mysql触发器实现两表同步

作者: 益初 | 来源:发表于2016-12-30 09:36 被阅读0次

触发器

触发器是(trigger)是个特殊的存储你过程,它的执行不是由程序调用,也不是手动启动,而是由事件来触发,比如当对一个表进行操作(INSERT,DELETE,UPDATE)时就会激活它执行。触发器经常 用来加强数据的完整性约束和业务规则等。触发器可以从DBA_TRIGGERS, USER_TRIGGES数据字典中查到。
触发器语法

CREATE TRIGGER
trigger_name 
TRIGGER_TIME[AFTER,BEFORE] 
TRIGGER_EVENT[UPDATE,INSERT,DELETE]
ON tbl_name
FOR EACH ROW trigger_stmt

触发器实现两表同步

#同步插入
DELIMITER $$ #修改定界符
DROP TRIGGER IF EXISTS sync_apps_insert$$
CREATE TRIGGER sync_apps_insert AFTER INSERT ON rht_train.rht_apps FOR EACH ROW
BEGIN
INSERT INTO rht_idc.rhi_apps 
(id, appid, appname, isreward, adesc, adetail, price, downcount, sortid, iftj, flag, apptype, appcol, imgurl, ver, vernum, iconurl, filesize, lang, appurl, package, ctime, utime, stars, signature, unconfirm, develop, typeinfo) VALUES 
(NEW.id, NEW.appid, NEW.appname, NEW.isreward, NEW.adesc, NEW.adetail, NEW.price, NEW.downcount, NEW.sortid, NEW.iftj, NEW.flag, NEW.apptype, NEW.appcol, NEW.imgurl, NEW.ver, NEW.vernum, NEW.iconurl, NEW.filesize, NEW.lang, NEW.appurl, NEW.package, NEW.ctime, NEW.utime, NEW.stars, NEW.signature, NEW.unconfirm, NEW.develop, NEW.typeinfo);
END $$
DELIMITER ; #还原定界符


#同步删除
DELIMITER $$ #修改定界符
DROP TRIGGER IF EXISTS sync_apps_delete$$
CREATE TRIGGER sync_apps_delete AFTER DELETE ON rht_train.rht_apps FOR EACH ROW
BEGIN
DELETE FROM rht_idc.rhi_apps WHERE rht_idc.rhi_apps.id=OLD.id;
END $$
DELIMITER ; #还原定界符


#同步更新
DELIMITER $$ #修改定界符
DROP TRIGGER IF EXISTS sync_apps_update$$
CREATE TRIGGER sync_apps_update AFTER UPDATE ON rht_train.rht_apps FOR EACH ROW
BEGIN
UPDATE `rht_idc`.`rhi_apps` SET `id`=NEW.id, `appid`=NEW.appid, `appname`=NEW.appname, 
`isreward`=NEW.isreward, `adesc`=NEW.adesc, `adetail`=NEW.adetail, `price`=NEW.price, `downcount`=NEW.downcount, 
`sortid`=NEW.sortid, `iftj`=NEW.iftj, `flag`=NEW.flag, `apptype`=NEW.apptype, `appcol`=NEW.appcol, `imgurl`=NEW.imgurl, 
`ver`=NEW.ver, `vernum`=NEW.vernum, `iconurl`=NEW.iconurl, `filesize`=NEW.filesize, `lang`=NEW.lang, `appurl`=NEW.appurl, 
`package`=NEW.package, `ctime`=NEW.ctime, `utime`=NEW.utime, `stars`=NEW.stars, `signature`=NEW.signature,
`unconfirm`=NEW.unconfirm, `develop`=NEW.develop, `typeinfo`=NEW.typeinfo WHERE (rht_idc.rhi_apps.id=OLD.id);
END $$
DELIMITER ; #还原定界符

如果执行返回

Trigger in wrong schema

请检查use datebases 是否是rht_train。触发器是建立在此库上的表,应当选择此库才能正常建立。

相关文章

  • Mysql触发器实现两表同步

    触发器 触发器是(trigger)是个特殊的存储你过程,它的执行不是由程序调用,也不是手动启动,而是由事件来触发,...

  • mysql 利用触发器实现表数据同步

    数据库 db1 和 数据库 db2 处于同一个数据库连接下,分别拥有表 table1 和 table2,两个表结构...

  • 触发器

    数据同步增加:如有两张表——A表和B表,创建触发器使当A表插入数据后B表也同步插入数据。其中B表插入数据的字段需要...

  • 以下MySQL的问题 你知道多少呢?

    MySQL表中允许有多少触发器?MySQL表允许以下6个触发器: -在插入之前-在插入后-更新前-更新后-删除和-...

  • Oracle与Mysql中的触发器(Trigger)对比

    Oracle触发器 Demo(通过触发器结合创建序列(sequence)的方式实现字段递增) Mysql 触发器(...

  • MySQL触发器

    触发器? Mysql触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作...

  • Mysql中的触发器

    触发器 MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用...

  • MySQL学习---触发器

    触发器讲解MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调...

  • MySql触发器使用

    MySql触发器参看文档触发器:在指定表上,(insert(插入)、update(跟新)、delete(删除))事...

  • MySQL触发器

    MySql触发器参看文档触发器:在指定表上,(insert(插入)、update(跟新)、delete(删除))事...

网友评论

      本文标题:Mysql触发器实现两表同步

      本文链接:https://www.haomeiwen.com/subject/lmqmvttx.html