亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL觸發器運用于遷移和同步數據的實例教程

2024-07-24 13:08:25
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了MySQL觸發器運用于遷移和同步數據的實例教程,分別是SQL Server數據遷移至MySQL以及同步備份數據表記錄的兩個例子,需要的朋友可以參考下
 

1.遷移數據
進行數據庫移植,SQL Server=>MySQL。SQL Server上有如下的Trigger 

SET QUOTED_IDENTIFIER ON  GO SET ANSI_NULLS ON  GO ALTER TRIGGER [trg_risks] ON dbo.projectrisk FOR INSERT, UPDATE AS BEGIN UPDATE projectrisk   SET classification =   case     when calc>= 9 then 3   when calc <9 and calc>=4 then 2   when calc <4 then 1   end    from (select inserted.id, inserted.possibility*inserted.severity as calc from inserted) as T1   where projectrisk.id = T1.id END GO SET QUOTED_IDENTIFIER OFF  GO SET ANSI_NULLS ON  GO 

簡單了解了下MySQL中,Trigger的語法。

# 創建 CREATE TRIGGER <觸發器名稱> { BEFORE | AFTER } { INSERT | UPDATE | DELETE } ON <表名稱> FOR EACH ROW <觸發器SQL語句>  # 刪除 DROP TRIGGER <觸發器名稱> 

注:創建觸發器需要CREATE TRIGGER權限。(HeidiSQL中執行Trigger語句會有bug)

由于MySQL中的每個觸發器只能針對一個動作,所以本次移植就需要創建兩個觸發器。對于發生變更的行,在觸發器中可以用 NEW 來代替。 
下邊的觸發器有什么問題嗎?

delimiter && CREATE TRIGGER trg_risks_insert AFTER INSERT ON `projectrisk` FOR EACH ROW UPDATE projectrisk SET classification = CASE WHEN possibility*severity>=9 THEN 3 WHEN possibility*severity <9 AND possibility*severity>=4 THEN 2 WHEN possibility*severity <4 THEN 1 END WHERE id = new.id; && CREATE TRIGGER trg_risks_update AFTER UPDATE ON `projectrisk` FOR EACH ROW UPDATE projectrisk SET classification = CASE WHEN possibility*severity>=9 THEN 3 WHEN possibility*severity <9 AND possibility*severity>=4 THEN 2 WHEN possibility*severity <4 THEN 1 END WHERE id = new.id; && delimiter ; 

問題就是,沒有考慮到觸發器中的修改也會觸發觸發器,進入了死循環。做了如下修改后,終于OK了。

delimiter && CREATE TRIGGER trg_risks_insert BEFORE INSERT ON `projectrisk` FOR EACH ROW BEGIN  SET new.classification = CASE  WHEN new.possibility*new.severity>=9 THEN 3  WHEN new.possibility*new.severity <9 AND new.possibility*new.severity>=4 THEN 2  WHEN new.possibility*new.severity <4 THEN 1  END; END && CREATE TRIGGER trg_risks_update BEFORE UPDATE ON `projectrisk` FOR EACH ROW BEGIN  SET new.classification = CASE  WHEN new.possibility*new.severity>=9 THEN 3  WHEN new.possibility*new.severity <9 AND new.possibility*new.severity>=4 THEN 2  WHEN new.possibility*new.severity <4 THEN 1  END; END && delimiter ; 

2.同步備份數據記錄表
添加記錄到新記錄表

DELIMITER $$USE `DB_Test`$$CREATE  /*!50017 DEFINER = 'root'@'%' */  TRIGGER `InsertOPM_Alarm_trigger` BEFORE INSERT ON `OPM_Alarm`   FOR EACH ROW BEGININSERT INTO OPM_Alarm_copy (AlarmId,AlarmCode,AlarmTypeId,AlarmLevelId,AlarmObjectCode,AlarmStatus,AlarmHandleUser,AlarmHandleTime,ADDTIME,ParkUserId,BerthCode,BargainOrderCode,BerthStartTime)VALUES(new.AlarmId,new.AlarmCode,new.AlarmTypeId,new.AlarmLevelId,new.AlarmObjectCode,new.AlarmStatus,new.AlarmHandleUser,new.AlarmHandleTime,new.ADDTIME,new.ParkUserId,new.BerthCode,new.BargainOrderCode,new.BerthStartTime);  END;$$DELIMITER ;CREATE TRIGGER InsertOPM_Alarm_trigger  BEFORE INSERT ON OPM_Alarm  FOR EACH ROWBEGIN INSERT INTO OPM_Alarm_copy (AlarmId,AlarmCode,AlarmTypeId,AlarmLevelId,AlarmObjectCode,AlarmStatus,AlarmHandleUser,AlarmHandleTime,ADDTIME,ParkUserId,BerthCode,BargainOrderCode,BerthStartTime)VALUES(new.AlarmId,new.AlarmCode,new.AlarmTypeId,new.AlarmLevelId,new.AlarmObjectCode,new.AlarmStatus,new.AlarmHandleUser,new.AlarmHandleTime,new.ADDTIME,new.ParkUserId,new.BerthCode,new.BargainOrderCode,new.BerthStartTime);END ;

 mysql觸發器監控mysql數據表記錄刪除操作 DELIMITER $$

USE `DB_Test`$$DROP TRIGGER /*!50032 IF EXISTS */ `SYS_OPM_trigger`$$CREATE  /*!50017 DEFINER = 'root'@'%' */  TRIGGER `SYS_OPM_trigger` AFTER DELETE ON `OPM_Alarm`   FOR EACH ROW BEGIN  DECLARE str VARCHAR(40000);   SET str=CONCAT(old.AlarmId,'@',old.AlarmCode,'@',old.AlarmTypeId,'@',old.AlarmLevelId,'@',   old.AlarmObjectCode,'@',old.AlarmStatus,'@',old.AlarmHandleUser,'@',old.AlarmHandleTime,'@',   old.AddTime,'@',old.ParkUserId,'@',old.BerthCode,'@',old.BargainOrderCode,'@',old.BerthStartTime);   INSERT INTO OPM_AlarmAction_log(UserName,Client_IP,Delete_before_key,Delete_Date)   VALUES(SUBSTRING_INDEX(USER(),'@',1),SUBSTRING_INDEX(USER(),'@',-1), str, NOW());  END;$$DELIMITER ;

刪除前 添加原記錄備份到另一記錄表

DELIMITER $$USE `DB_Test`$$DROP TRIGGER /*!50032 IF EXISTS */ `InsertOPM_Alarm_trigger`$$CREATE  /*!50017 DEFINER = 'root'@'%' */  TRIGGER `InsertOPM_Alarm_trigger` BEFORE DELETE ON `OPM_Alarm`   FOR EACH ROW BEGIN   INSERT INTO OPM_Alarm_copy (AlarmId,AlarmCode,AlarmTypeId,AlarmLevelId,AlarmObjectCode,AlarmStatus,AlarmHandleUser,    AlarmHandleTime,ADDTIME,ParkUserId,BerthCode,BargainOrderCode,BerthStartTime)     VALUES(old.AlarmId,old.AlarmCode,old.AlarmTypeId,old.AlarmLevelId,old.AlarmObjectCode,old.AlarmStatus,old.AlarmHandleUser,         old.AlarmHandleTime,old.ADDTIME,old.ParkUserId,old.BerthCode,old.BargainOrderCode,old.BerthStartTime);       END;$$DELIMITER ;


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂第一页| 一区二区中文字幕| 欧美最顶级的aⅴ艳星| 日韩激情在线视频| 欧美午夜影院在线视频| 日本高清不卡的在线| 亚洲国产成人91精品| 日韩福利视频在线观看| 日本精品中文字幕| 福利一区视频在线观看| 啊v视频在线一区二区三区| 亚洲美女精品久久| 欧美做受高潮电影o| 成人免费大片黄在线播放| 98精品国产自产在线观看| 国色天香2019中文字幕在线观看| 亚洲第一页在线| 97超视频免费观看| 清纯唯美亚洲激情| 亲子乱一区二区三区电影| 精品香蕉在线观看视频一| 91高清免费在线观看| 亚洲欧美在线免费| 欧美激情亚洲视频| 51久久精品夜色国产麻豆| 国产亚洲精品日韩| 最近中文字幕mv在线一区二区三区四区| 国产精品a久久久久久| 国产精品亚洲综合天堂夜夜| 久久精品国产一区二区电影| 日韩成人激情视频| 亚洲成人久久网| 亚洲www在线观看| 久久97精品久久久久久久不卡| 国色天香2019中文字幕在线观看| 日韩精品极品在线观看播放免费视频| 91免费看片网站| 欧美激情视频网站| 国产成人久久精品| 久久国产精品免费视频| 久久久久五月天| 国产极品jizzhd欧美| 97av视频在线| 精品香蕉在线观看视频一| 亚洲国产精品va在看黑人| 精品国产精品三级精品av网址| 国产精品免费看久久久香蕉| 欧美综合国产精品久久丁香| 色哟哟亚洲精品一区二区| 日韩中文字幕免费看| 日韩69视频在线观看| 日韩av在线影视| 成人一区二区电影| 亚洲人永久免费| 这里只有精品视频| 亚洲在线免费观看| 国产精品爽黄69| 国产999精品久久久| 91视频免费在线| 久久天天躁狠狠躁老女人| 成人免费黄色网| 欧美成人精品一区二区三区| 日韩经典中文字幕| 精品日本美女福利在线观看| 91精品国产91久久久久久| 国产精品久久久久久久av电影| 亚洲图中文字幕| 国产精品视频xxx| 久久久av一区| 中文字幕在线观看亚洲| 日韩欧美国产黄色| 另类天堂视频在线观看| 精品久久久久国产| 国产精品久久久久77777| 一区二区三区高清国产| 超碰日本道色综合久久综合| 亚洲男人天堂2019| 亚洲成年人影院在线| 中文字幕日韩欧美在线视频| 久久成人精品电影| 亚洲精品一区二区在线| 国产精品丝袜视频| 亚洲第一网站男人都懂| 91精品在线影院| 亚洲社区在线观看| 亚洲欧美国产精品专区久久| 成人免费看吃奶视频网站| 欧美福利视频在线观看| 色一区av在线| 久久中文久久字幕| 青青在线视频一区二区三区| 欧美视频中文字幕在线| 国内精品模特av私拍在线观看| 久久久久久亚洲精品中文字幕| 亚洲一区二区三| 亚洲国产精品一区二区久| 欧美精品一区三区| 日韩网站免费观看高清| 日韩成人在线电影网| 国产美女精品免费电影| 日韩av黄色在线观看| 亚洲精品国产综合久久| 亚洲有声小说3d| 欧美一级片久久久久久久| 日本国产一区二区三区| 亚洲欧美中文日韩在线v日本| 欧美第一黄色网| 中文字幕欧美日韩在线| 亚洲第一中文字幕| 日韩在线观看免费高清完整版| 久久男人的天堂| 欧美高清视频一区二区| 亚洲国产精品yw在线观看| 97国产精品人人爽人人做| 久久天天躁日日躁| 国产亚洲精品久久久久久777| 亚洲第一av网| 日本一区二区三区在线播放| 国产精品69久久久久| 久久亚洲精品一区二区| 国产91免费观看| 日本成人免费在线| 91影院在线免费观看视频| 欧美电影免费观看高清完整| 51精品国产黑色丝袜高跟鞋| 久久久免费观看视频| 欧美日韩国产激情| 精品毛片三在线观看| 国产中文日韩欧美| 亚洲va欧美va国产综合久久| 国产精品一区av| 国产视频久久久久久久| 日韩电影中文字幕av| 欧美日韩激情美女| 亚洲japanese制服美女| 成人免费午夜电影| 色综合影院在线| 久久婷婷国产麻豆91天堂| 欧美午夜精品久久久久久久| 一区二区欧美亚洲| 国产伦精品一区二区三区精品视频| 亚洲激情在线观看| 日韩av高清不卡| 成人免费黄色网| 久久久久久久久国产精品| 国产精品video| 国产一区视频在线播放| 深夜成人在线观看| 色婷婷久久一区二区| 国产精品劲爆视频| 欧美成人激情在线| 亚洲剧情一区二区| 日韩视频在线观看免费| 亚洲视频一区二区三区| 国产欧美一区二区三区在线看| 亚洲色图第三页| 91精品久久久久久久久久另类| 国产精品自产拍在线观| 91po在线观看91精品国产性色| 亚洲视频日韩精品| 精品福利在线看| 69精品小视频| 精品国产依人香蕉在线精品| 亚洲欧美第一页|