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

 

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值