mysql建立TRIGGER觸發器實現相同伺服器下不同庫的表資料同步
阿新 • • 發佈:2018-11-01
實現功能:mysql建立INSERT|UPDATE|DELETE觸發器實現相同伺服器下不同庫的表資料同步。比如table1表的資料有insert|update|delete操作,便同步到sync表中。然後再根據sync表中state(同步狀態)和oper(操作方式)欄位的狀態將sync表中資料insert|update|delete到最終需要同步的業務表中(這裡涉及到跨級資料同步)。
INSERT Code
#tri_afterinsert_on_camera DROP TRIGGER IF EXISTS tri_afterinsert_on_camera; DELIMITER $ CREATE TRIGGER tri_afterinsert_on_camera AFTER INSERT ON CAMERA FOR EACH ROW BEGIN declare id bigint(20); declare intelligentarea_id bigint(20); declare hierarchy varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci; set id=new.id; set intelligentarea_id=new.intelligentarea_id; set hierarchy=new.hierarchy; INSERT INTO sync.camera(id,intelligentarea_id,hierarchystate,state,oper) VALUES(id,intelligentarea_id,hierarchy,,0,'add'); END; $ COMMIT;
注意declare和set
DELETE Code
#tri_afterdelete_on_camera DROP TRIGGER IF EXISTS tri_afterdelete_on_camera; DELIMITER $ CREATE TRIGGER tri_afterdelete_on_camera AFTER DELETE ON CAMERA FOR EACH ROW BEGIN INSERT INTO sync.camera(id,intelligentarea_id,hierarchy,state,oper) VALUES(old.id,old.intelligentarea_id,old.hierarchy,0,'delete'); END; $ COMMIT;
注意沒有declare和set,在INSERT的欄位傳值中有old
INSERT Code
#tri_afterupdate_on_camera DROP TRIGGER IF EXISTS tri_afterupdate_on_camera; DELIMITER $ CREATE TRIGGER tri_afterupdate_on_camera AFTER UPDATE ON CAMERA FOR EACH ROW BEGIN declare id bigint(20); declare intelligentarea_id bigint(20); declare hierarchy varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci; set id=new.id; set intelligentarea_id=new.intelligentarea_id; set hierarchy=new.hierarchy; INSERT INTO sync.camera(id,intelligentarea_id,hierarchy,state,oper) VALUES(id,intelligentarea_id,hierarchy,0,'update'); END; $ COMMIT;
注意declare和set