Mysql觸發(fā)器實(shí)現(xiàn)兩表同步

觸發(fā)器

觸發(fā)器是(trigger)是個(gè)特殊的存儲(chǔ)你過程,它的執(zhí)行不是由程序調(diào)用,也不是手動(dòng)啟動(dòng),而是由事件來觸發(fā),比如當(dāng)對(duì)一個(gè)表進(jìn)行操作(INSERT,DELETE,UPDATE)時(shí)就會(huì)激活它執(zhí)行。觸發(fā)器經(jīng)常 用來加強(qiáng)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。觸發(fā)器可以從DBA_TRIGGERS, USER_TRIGGES數(shù)據(jù)字典中查到。
觸發(fā)器語法

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

觸發(fā)器實(shí)現(xiàn)兩表同步

#同步插入
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 ; #還原定界符

如果執(zhí)行返回

Trigger in wrong schema

請(qǐng)檢查use datebases 是否是rht_train。觸發(fā)器是建立在此庫(kù)上的表,應(yīng)當(dāng)選擇此庫(kù)才能正常建立。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,881評(píng)論 18 139
  • 觸發(fā)器 MySQL包含對(duì)觸發(fā)器的支持。觸發(fā)器是一種與表操作有關(guān)的數(shù)據(jù)庫(kù)對(duì)象,當(dāng)觸發(fā)器所在表上出現(xiàn)指定事件時(shí),將調(diào)用...
    FTOLsXD閱讀 958評(píng)論 0 1
  • MySQL包含對(duì)觸發(fā)器的支持。觸發(fā)器是一種與表操作有關(guān)的數(shù)據(jù)庫(kù)對(duì)象,當(dāng)觸發(fā)器所在表上出現(xiàn)指定事件時(shí),將調(diào)用該對(duì)象,...
    金星show閱讀 843評(píng)論 0 3
  • “你贈(zèng)我鮮花一朵 我許你半世情緣 ” 煊笨蛋,生日快樂 又到了你的生日 想一...
    BelovedChen閱讀 4,786評(píng)論 0 0
  • 蘭姐值得贊, 辛苦人人見。 油坊經(jīng)營(yíng)好, 人氣往上竄。
    簡(jiǎn)村小吹閱讀 206評(píng)論 14 15