前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用mysql触发器新增或修改一个表后,触发到另一个表

使用mysql触发器新增或修改一个表后,触发到另一个表

作者头像
凯哥Java
发布2019-06-28 15:05:45
7K0
发布2019-06-28 15:05:45
举报
文章被收录于专栏:凯哥Java凯哥Java

问题描述:

在工作中,有时候,我们需要备份一个表。或者是在向一张表中添加一条数据后,另一张同结构的表也要添加用于备份。如下:

a表:

82f47ef8e52e72325e06e44085527a47.png
82f47ef8e52e72325e06e44085527a47.png

DROP TABLE IF EXISTS `t_a`;

CREATE TABLE `t_a` (

`a_ID` varchar(50) NOT NULL COMMENT '流水编号',

`a_ACCOUNT_ID` int(8) DEFAULT NULL COMMENT '外键',

`a_TYPE` varchar(2) DEFAULT NULL COMMENT '类型:01:增 02:减',

`a_AMOUNT` int(8) DEFAULT NULL COMMENT '收支额',

`a_REASON` varchar(100) DEFAULT NULL COMMENT '收支原因',

`a_CREATETIME` varchar(20) DEFAULT NULL COMMENT '时间',

`a_STATUS` varchar(2) DEFAULT '01' COMMENT '00:已处理 01:未处理',

PRIMARY KEY (`a_ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

备份表:

e299d56d6aee12f438cb8748df3e7d70.png
e299d56d6aee12f438cb8748df3e7d70.png

DROP TABLE IF EXISTS `t_a_history`;

CREATE TABLE `t_a_history` (

`b_ID` varchar(50) NOT NULL COMMENT '流水编号',

`b_ACCOUNT_ID` int(8) DEFAULT NULL COMMENT '外键',

`b_TYPE` varchar(2) DEFAULT NULL COMMENT '类型:01:增 02:减',

`b_AMOUNT` int(8) DEFAULT NULL COMMENT '收支额',

`b_REASON` varchar(100) DEFAULT NULL COMMENT '收支原因',

`b_CREATETIME` varchar(20) DEFAULT NULL COMMENT '收支时间',

`b_STATUS` varchar(2) DEFAULT '01' COMMENT '00:已处理 01:未处理',

PRIMARY KEY (`FLOW_ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建触发器:

67d6fbba1b98d6f59a53b99c87284584.png
67d6fbba1b98d6f59a53b99c87284584.png

delimiter ||

DROP TRIGGER IF EXISTS a_afterinsert_on_ahistory||

CREATE TRIGGER a_afterinsert_on_ahistory

AFTER INSERT ON a_flow

FOR EACH ROW

BEGIN

insert into a_flow_history(b_ID,b_ACCOUNT_ID,b_AMOUNT,b_REASON,b_CREATETIME,b_STATUS)

values(new.a_ID,new.a_ACCOUNT_ID,new.a_AMOUNT,new.a_REASON,new.a_CREATETIME,new.a_STATUS);

END||

delimiter ;

需要注意:

必须声明:

delimiter ||

更新:

9b28f72389a643af9ce71ab52e958e21.png
9b28f72389a643af9ce71ab52e958e21.png

-- 创建修改触发器

DELIMITER || -- 声明结束符

DROP TRIGGER IF EXISTS a_afterupdate_on_ahistory||

CREATE TRIGGER a_afterupdate_on_ahistory

AFTER UPDATE ON a_flow

FOR EACH ROW

BEGIN

UPDATE a_flow_history SET a_STATUS =new.a_STATUS

WHERE FLOW_ID=new.FLOW_ID;

END||

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档