如何使用MYSQL触发器,备份历史记录?
一、首先创建一个存放历史表的数据库。
-- 创建历史库
create database lianxin_history;
二、创建要备份的数据表
use lianxin_history;
-- 创建历史库中的equipment_info同构表以及增加两个记录操作状态字段
create table `equipment_info` select * from `lianxin_trace`.`equipment_info` where 1<0;
ALTER TABLE `equipment_info`
ADD COLUMN `OPERATE_TYPE` VARCHAR(15) NULL COMMENT '操作类型:INSERT(新增),UPDATE(更新),DELETE(删除)',
ADD COLUMN `OPERATE_TIME` DATETIME NULL DEFAULT NOW() COMMENT '操作时间,自动生成';
三、创建触发器
1、新增的触发器。
-- 下方是创建数据源表触发器脚本
use lianxin_trace;-- 向历史库创建一条新增记录(equipment_info表)
DROP TRIGGER IF EXISTS `lianxin_trace`.`equipment_info_AFTER_INSERT`;DELIMITER $$
USE `lianxin_trace`$$
CREATE DEFINER = CURRENT_USER TRIGGER `lianxin_trace`.`equipment_info_AFTER_INSERT` AFTER INSERT ON `equipment_info` FOR EACH ROW
BEGININSERT INTO lianxin_history.equipment_info (EQUIPMENT_ID, EQUIPMENT_NAME, EQUIPMENT_CODE, PRODUCER, STATUS, PRODUCTION_TIME, ENTER_TIME, VALID_TIME, ESTIMATE, CONFIRM_RESULT, CONFIRM_TIME, CONFIRM_ITEM_INFO, USED, REMARKS, LEAVE_POS, RELA_PDA_FLAG, PDA_EQUIPMENT_CODE, ALIVE_FLAG, ADD_USER_ID, ADD_TIME, OPR_USER_ID, OPR_TIME, USE_LOCATION, OPERATE_TYPE, OPERATE_TIME) VALUES (NEW.EQUIPMENT_ID, NEW.EQUIPMENT_NAME, NEW.EQUIPMENT_CODE, NEW.PRODUCER, NEW.STATUS, NEW.PRODUCTION_TIME, NEW.ENTER_TIME, NEW.VALID_TIME, NEW.ESTIMATE, NEW.CONFIRM_RESULT, NEW.CONFIRM_TIME, NEW.CONFIRM_ITEM_INFO, NEW.USED, NEW.REMARKS, NEW.LEAVE_POS, NEW.RELA_PDA_FLAG, NEW.PDA_EQUIPMENT_CODE, NEW.ALIVE_FLAG, NEW.ADD_USER_ID, NEW.ADD_TIME, NEW.OPR_USER_ID, NEW.OPR_TIME, NEW.USE_LOCATION, 'INSERT', NOW());
END$$
DELIMITER ;
2、修改的触发器
-- 下方是创建数据源表触发器脚本
use lianxin_trace;-- 向历史库创建一条修改记录(equipment_info表)
DROP TRIGGER IF EXISTS `lianxin_trace`.`equipment_info_AFTER_UPDATE`;DELIMITER $$
USE `lianxin_trace`$$
CREATE DEFINER = CURRENT_USER TRIGGER `lianxin_trace`.`equipment_info_AFTER_UPDATE` AFTER UPDATE ON `equipment_info` FOR EACH ROW
BEGININSERT INTO lianxin_history.equipment_info (EQUIPMENT_ID, EQUIPMENT_NAME, EQUIPMENT_CODE, PRODUCER, STATUS, PRODUCTION_TIME, ENTER_TIME, VALID_TIME, ESTIMATE, CONFIRM_RESULT, CONFIRM_TIME, CONFIRM_ITEM_INFO, USED, REMARKS, LEAVE_POS, RELA_PDA_FLAG, PDA_EQUIPMENT_CODE, ALIVE_FLAG, ADD_USER_ID, ADD_TIME, OPR_USER_ID, OPR_TIME, USE_LOCATION, OPERATE_TYPE, OPERATE_TIME) VALUES (NEW.EQUIPMENT_ID, NEW.EQUIPMENT_NAME, NEW.EQUIPMENT_CODE, NEW.PRODUCER, NEW.STATUS, NEW.PRODUCTION_TIME, NEW.ENTER_TIME, NEW.VALID_TIME, NEW.ESTIMATE, NEW.CONFIRM_RESULT, NEW.CONFIRM_TIME, NEW.CONFIRM_ITEM_INFO, NEW.USED, NEW.REMARKS, NEW.LEAVE_POS, NEW.RELA_PDA_FLAG, NEW.PDA_EQUIPMENT_CODE, NEW.ALIVE_FLAG, NEW.ADD_USER_ID, NEW.ADD_TIME, NEW.OPR_USER_ID, NEW.OPR_TIME, NEW.USE_LOCATION, 'UPDATE', NOW());
END$$
DELIMITER ;
3、删除的触发器
-- 下方是创建数据源表触发器脚本
use lianxin_trace;-- 向历史库创建一条删除记录(equipment_info表)
DROP TRIGGER IF EXISTS `lianxin_trace`.`equipment_info_BEFORE_DELETE`;DELIMITER $$
USE `lianxin_trace`$$
CREATE DEFINER = CURRENT_USER TRIGGER `lianxin_trace`.`equipment_info_BEFORE_DELETE` BEFORE DELETE ON `equipment_info` FOR EACH ROW
BEGININSERT INTO lianxin_history.equipment_info (EQUIPMENT_ID, EQUIPMENT_NAME, EQUIPMENT_CODE, PRODUCER, STATUS, PRODUCTION_TIME, ENTER_TIME, VALID_TIME, ESTIMATE, CONFIRM_RESULT, CONFIRM_TIME, CONFIRM_ITEM_INFO, USED, REMARKS, LEAVE_POS, RELA_PDA_FLAG, PDA_EQUIPMENT_CODE, ALIVE_FLAG, ADD_USER_ID, ADD_TIME, OPR_USER_ID, OPR_TIME, USE_LOCATION, OPERATE_TYPE, OPERATE_TIME) VALUES (OLD.EQUIPMENT_ID, OLD.EQUIPMENT_NAME, OLD.EQUIPMENT_CODE, OLD.PRODUCER, OLD.STATUS, OLD.PRODUCTION_TIME, OLD.ENTER_TIME, OLD.VALID_TIME, OLD.ESTIMATE, OLD.CONFIRM_RESULT, OLD.CONFIRM_TIME, OLD.CONFIRM_ITEM_INFO, OLD.USED, OLD.REMARKS, OLD.LEAVE_POS, OLD.RELA_PDA_FLAG, OLD.PDA_EQUIPMENT_CODE, OLD.ALIVE_FLAG, OLD.ADD_USER_ID, OLD.ADD_TIME, OLD.OPR_USER_ID, OLD.OPR_TIME, OLD.USE_LOCATION, 'DELETE', NOW());
END;$$
DELIMITER ;
测试结果:
如何使用MYSQL触发器,备份历史记录?相关推荐
- MySql 触发器同步备份数据表记录
添加记录到新记录表 DELIMITER $$ USE `DB_Test`$$ CREATE/*!50017 DEFINER = 'root'@'%' */TRIGGER `InsertOPM_Alar ...
- MySQL Xtrabackup备份和恢复
简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠 ...
- MySQL 触发器应用案例
网友问题:对于MySQL主从复制结构中,如何让Slave过滤delete操作. 问题分析:该问题对应的是保全所有的记录,包括delete的记录. 对于MySQL本身的过滤规则粒度是精确到表的粒度. 主 ...
- linux设置mysql定时任务_原创 Linux下实现Mysql定时任务备份数据
本实例将创建目录放置于/mnt目录下,可根据具体情况放置于其他目录: cd /mnt mkdir dbback pwd /mnt/dbback 创建shell脚本 脚本名称可根据自己规范进行自定义: ...
- MySQL 的备份和恢复机制 MyISAM 和 Innodb
转自:http://blog.csdn.net/sosoft_dzz/article/details/5299666 deven感觉这个文章还是比较靠谱的. 本文讨论 MySQL 的备份和恢复机制,以 ...
- 2.5.1 MySQL数据库备份恢复基础讲解
MySQL数据库备份恢复基础 MySQL常见的故障类型 对于用户来说,数据库中保存的数据通常至关重要,所以要采取各种手段来防止各种可能的数据损失和数据故障. DBA主要任务就是维持数据库的高可靠性运行 ...
- mysql数据库备份总结_MySQL数据库备份总结
一个企业的正常运行,数据的完整性是最关键的:所以我们需要在工作中要很熟练的掌握数据的备份与恢复方法:下面是对Mysql数据库备份的三种方法总结,希望对大家会有所帮助 备份开始前的工作环境准备: 1.创 ...
- MySQL 数据备份与还原
数据的备份类型 数据的备份类型根据其自身的特性主要分为以下几组 1.完全备份备份整个数据集( 即整个数据库 ).部分备份指的是备份部分数据集(例如: 只备份一个表) 2.部分备份 而部分备份又分为以下 ...
- mysql 数据备份方案_MySQL常见备份方案
MySQL常见备份方案有以下三种: mysqldump + binlog lvm + binlog xtrabackup 本例为方便演示,数据库里面数据为空.下面开始动手 mkdir /opt/bac ...
- linux mysql集群 备份与恢复,Linux下MySQL的备份和恢复
MySQL备份的原因1. 灾难恢复 2. 审计 3. 测试1234512345 mysql的备份类型1. 根据服务器的在线状态: 热备:服务器处于运行状态 冷备:服务器出去停止状态 温备:服务器处于半 ...
最新文章
- OpenStack环境搭建(二:Fuel Master的安装及配置)
- 【Rsync项目实战一】备份全网服务器数据
- servlet增删改查实例_SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)
- 前端调试、兼容、适配指南与工具分享
- QtCreator无法编辑源文件
- golang 关闭gc 并手动gc_Golang垃圾回收 屏障技术
- 本硕一致计算机科学与技术专业介绍,哈尔滨理工大学计算机科学与技术专业介绍...
- java day06【类与对象、封装、构造方法】
- 科学函数计算机怎么关机,函数计算器的功能有哪些?关机是哪个键?
- 在线html解压,javascript实现网页端解压并查看zip文件
- 数据中心网络架构 — 网络带宽的收敛比
- 揭秘交通大脑——BATJ技术争夺战,滴滴与高德的AI新版图
- AI算法之Encoder-Decoder 和 Seq2Seq
- HCTF2017-Web-Writeup
- Unity Webgl内嵌网页页面
- 计算机重新装xp系统软件,关于安装软件重启XP电脑后软件不见的处理方法
- 阿里巴巴-新加坡南洋理工大学成立联合研究院 开展全方位AI合作
- JAVA学习笔记五---函数
- 小朋友排队(树状数组)
- 有什么日常可行的脑力锻炼方法,保持脑部活力?