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

  • 作者: 凯哥Java(公众号:凯哥Java)
  • 工作小总结
  • 时间:2018-09-18 13:56
  • 5266人已阅读
简介 问题描述:在工作中,有时候,我们需要备份一个表。或者是在向一张表中添加一条数据后,另一张同结构的表也要添加用于备份。如下:a表:DROPTABLEIFEXISTS`t_a`;CREATETABLE`t_a`( `a_ID`varchar(50)NOTNULLCOMMENT'流水编号', `a_ACCOUNT_ID`int(8)DEFAULTNULLCOMMENT

🔔🔔好消息!好消息!🔔🔔

 如果您需要注册ChatGPT,想要升级ChatGPT4。凯哥可以代注册ChatGPT账号代升级ChatGPT4

有需要的朋友👉:微信号 kaigejava2022

问题描述:

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

a表:

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

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

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

-- 创建修改触发器

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||


TopTop