本文摘自PHP中文网,作者小云云,侵删。
案例:通过PHP后台代码可以将员工的信息删除,将删除的员工信息进行恢复(类似于从回收站中恢复员工信息),并且还可以将已经删除的员工进行清空(类似于清空回复站的功能)。本文主要介绍了Mysql触发器在PHP项目中用来做信息备份、恢复和清空的相关资料,需要的朋友可以参考下。
思路:
要有一张员工表,还要有一张员工备份表;备份,使用触发器,在点击删除按钮执行删除功能之前将员工表中的信息导入到备份表中,这样就达到了备份的效果;恢复,对备份表使用触发器,将备份表中的数据删除,删除的同时将此数据导入到员工表中;清空,使用truncate方法,将备份表中的数据彻底清空,并且释放内存,而且这个方法进行数据删除不会调用触发器。话不多少,直接上干货。
第一步:建表,员工表,员工备份表。
1 2 3 4 5 6 7 8 9 10 11 12 13 | CREATE TABLE `employee` (
`id` int (11) NOT NULL AUTO_INCREMENT,
`denumber` varchar (255) DEFAULT '0' ,
`idnumber` varchar (255) DEFAULT '0' ,
`worknumber` varchar (255) DEFAULT '1' ,
`pwd` varchar (255) DEFAULT NULL ,
`emname` varchar (255) DEFAULT '0' ,
`tel` varchar (255) DEFAULT '0' ,
`salary` int (255) DEFAULT '0' ,
`entrytime` varchar (255) DEFAULT '0' ,
`orderpaixu` int (255) DEFAULT '1' ,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=100 DEFAULT CHARSET=utf8
|
这是员工表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | CREATE TABLE `employeebackup` (
`id` int (11) NOT NULL ,
`denumber` varchar (255) DEFAULT NULL ,
`idnumber` varchar (255) DEFAULT NULL ,
`worknumber` varchar (255) DEFAULT NULL ,
`pwd` varchar (255) DEFAULT NULL ,
`emname` varchar (255) DEFAULT NULL ,
`tel` varchar (255) DEFAULT NULL ,
`salary` int (255) DEFAULT NULL ,
`entrytime` varchar (255) DEFAULT NULL ,
`orderpaixu` int (255) DEFAULT NULL ,
`deletetime` datetime DEFAULT NULL ,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
员工备份表,多了一个字段deletetime,为了记录删除时间
第二步:备份,给员工表建触发器(有关触发器的资料可以查看我的另一篇博客 http://www.cnblogs.com/liebagefly/p/7517998.html),在点击删除按钮执行删除功能之前将员工表中的信息导入到备份表中。
触发器sql代码:
1 2 3 4 5 6 | CREATE trigger deletesemployee before delete on employee
for each ROW
begin
insert into employeebackup (id,denumber,idnumber,worknumber,pwd,emname,tel,salary,entrytime,orderpaixu,deletetime)
values (OLD.id,OLD.denumber,OLD.idnumber,OLD.worknumber,OLD.pwd,OLD.emname,OLD.tel,OLD.salary,OLD.entrytime,OLD.orderpaixu,NOW());
end
|
php后台方法,我使用的框架是yii2.
1 2 3 4 5 | public function actionEmployeedel($id)
{
Employee::findOne($id)-> delete ();
return $this->redirect([ 'employeemanage' ]);
}
|
第三步:恢复,将删除的信息进行恢复,对备份表使用触发器,将备份表中的数据删除,删除的同时将此数据导入到员工表中。
触发器sql代码:
1 2 3 4 5 6 | CREATE trigger deletesemployeebackup before delete on employeebackup
for each ROW
begin
insert into employee (id,denumber,idnumber,worknumber,pwd,emname,tel,salary,entrytime,orderpaixu)
values (OLD.id,OLD.denumber,OLD.idnumber,OLD.worknumber,OLD.pwd,OLD.emname,OLD.tel,OLD.salary,OLD.entrytime,OLD.orderpaixu);
end
|
php代码
1 2 3 4 5 | public function actionRecoveremployeedel($id)
{
Employeebackup::findOne($id)-> delete ();
return $this->redirect([ 'recoveremployee' ]);
}
|
除了备份,有时还要做到清空功能,使用truncate方法,将备份表中的数据彻底清空,并且释放内存,而且这个方法进行数据删除不会调用触发器。
yii2的后台中调用sql的原始写法,即将所有已经删除的用户清空。
1 2 3 4 5 6 | public function actionDropemployeedel()
{
Yii::$app->db->createCommand( 'truncate table employeebackup' )
-> execute ();
return $this->redirect([ 'recoveremployee' ]);
}
|
怎么样学会了吗?有用的话赶紧收藏起来吧。
相关推荐:
mysql触发器详解
mysql触发器简介及如何创建和删除触发器
【原创】利用MySQL触发器高性能造数据
以上就是Mysql触发器在PHP项目中用来做信息备份、恢复和清空的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
mysql运行sql文件时出现问题怎么办
mysql-5.7.28 在linux下的安装教程图解
一起彻底搞懂 mysql 的锁机制
navicat如何查看mysql的操作记录
mysql结合备份+binlog恢复误删除操作数据
百万级数据mysql测试环境介绍
mysql数据库安装后在服务中没有mysql启动项的详解
mysql索引背后的数据结构及算法原理详解
mysql数据库基础篇之入门基础命令小结
mysql循环插入数据的代码示例
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » Mysql触发器在PHP项目中用来做信息备份、恢复和清空