Mysql触发器在PHP项目中用来做信息备份、恢复和清空


本文摘自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》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...