问题描述:
在工作中,有时候,我们需要备份一个表。或者是在向一张表中添加一条数据后,另一张同结构的表也要添加用于备份。如下:
a表:
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;
备份表:
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;
创建触发器:
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 ||
更新:
-- 创建修改触发器
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||