1. 程式人生 > >mysql建立TRIGGER觸發器實現相同伺服器下不同庫的表資料同步

mysql建立TRIGGER觸發器實現相同伺服器下不同庫的表資料同步

實現功能: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