MySQL 触发器,实现不同数据库,不同表名,表结构不同,数据实时同步

创建触发器:

CREATE TRIGGER trigger_name

trigger_time

trigger_event ON tbl_name

FOR EACH ROW

trigger_stmt

trigger_name:标识触发器名称,用户自行指定;
trigger_time:标识触发时机,取值为 BEFORE 或 AFTER;
trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE;
tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。

INSERT触发器

INSERT触发器可以使用 NEW.列名  读取插入的新值,也可以修改它。

UPDATE触发器

可以使用 NEW.列名 获取新值,也可以使用  OLD.列名  获取旧值。

DELETE触发器

可以使用  OLD.列名  获取旧表中的值(只读)。

 用处:

          在BEFORE触发器中进行一些数据的校验工作(大小写、数据类型、格式等)

          在AFTER触发器中进行一些后续的统计工作(行数、总数、平均值等)

1. 插入数据:

DELIMITER $
CREATE TRIGGER tr_insert_zcarticlebody AFTER INSERT ON zcarticlebody FOR EACH ROW
BEGIN
    -- 插入目标表
    INSERT INTO
      china_dev.cb_article_body(id,page_titles,body_text,copy_image_flag)
    VALUES
      (new.ID,new.PageTitles,new.BodyText,new.CopyImageFlag);
END;
$
DELIMITER;


tr_insert_zcarticlebody :触发器名称;

zcarticlebody :建立触发器的表名;

chinabim_dev :数据库名称;

cb_article_body :触发的表名,即目标表名;

2. 更改数据:

DELIMITER $
CREATE TRIGGER tr_update_zcarticlebody AFTER UPDATE ON zcarticlebody FOR EACH ROW
BEGIN
  UPDATE china_dev.cb_article_body 
    SET page_titles = new.PageTitles,body_text = new.BodyText,copy_image_flag = new.CopyImageFlag
  WHERE id = new.ID;
END
$
DELIMITER;



tr_insert_zcarticlebody :触发器名称;

zcarticlebody :建立触发器的表名;

chinabim_dev :数据库名称;

cb_article_body :触发的表名,即目标表名;

3. 删除数据:

DELIMITER $
CREATE TRIGGER tr_del_zcarticlebody AFTER DELETE ON zcarticlebody FOR EACH ROW 
BEGIN
  -- INSE
  DELETE FROM china_dev.cb_article_body WHERE id = old.ID;
END
$
DELIMITER ;
COMMIT;


tr_insert_zcarticlebody :触发器名称;

zcarticlebody :建立触发器的表名;

chinabim_dev :数据库名称;

cb_article_body :触发的表名,即目标表名;

Navicat for MySQL

MySQL 触发器,实现不同数据库,不同表名,表结构不同,数据实时同步_第1张图片

MySQL 触发器,实现不同数据库,不同表名,表结构不同,数据实时同步_第2张图片 

MySQL 触发器,实现不同数据库,不同表名,表结构不同,数据实时同步_第3张图片 

你可能感兴趣的:(MySql)