Mysql觸發器在PHP項目中用來做信息備份、恢復與清空
發表時間:2023-07-16 來源:明輝站整理相關軟件相關文章人氣:
[摘要]案例:通過PHP后臺代碼可以將員工的信息刪除,將刪除的員工信息進行恢復(類似于從回收站中恢復員工信息),并且還可以將已經刪除的員工進行清空(類似于清空回復站的功能)。本文主要介紹了Mysql觸發器在...
案例:通過PHP后臺代碼可以將員工的信息刪除,將刪除的員工信息進行恢復(類似于從回收站中恢復員工信息),并且還可以將已經刪除的員工進行清空(類似于清空回復站的功能)。本文主要介紹了Mysql觸發器在PHP項目中用來做信息備份、恢復和清空的相關資料,需要的朋友可以參考下。
思路:
要有一張員工表,還要有一張員工備份表;備份,使用觸發器,在點擊刪除按鈕執行刪除功能之前將員工表中的信息導入到備份表中,這樣就達到了備份的效果;恢復,對備份表使用觸發器,將備份表中的數據刪除,刪除的同時將此數據導入到員工表中;清空,使用truncate方法,將備份表中的數據徹底清空,并且釋放內存,而且這個方法進行數據刪除不會調用觸發器。話不多少,直接上干貨。
第一步:建表,員工表,員工備份表。
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
這是員工表
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代碼:
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.
public function actionEmployeedel($id)
{
Employee::findOne($id)->delete();
return $this->redirect(['employeemanage']);
}
第三步:恢復,將刪除的信息進行恢復,對備份表使用觸發器,將備份表中的數據刪除,刪除的同時將此數據導入到員工表中。
觸發器sql代碼:
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代碼
public function actionRecoveremployeedel($id)
{
Employeebackup::findOne($id)->delete();
return $this->redirect(['recoveremployee']);
}
除了備份,有時還要做到清空功能,使用truncate方法,將備份表中的數據徹底清空,并且釋放內存,而且這個方法進行數據刪除不會調用觸發器。
yii2的后臺中調用sql的原始寫法,即將所有已經刪除的用戶清空。
public function actionDropemployeedel()
{
Yii::$app->db->createCommand('truncate table employeebackup')
->execute();
return $this->redirect(['recoveremployee']);
}
怎么樣學會了嗎?有用的話趕緊收藏起來吧。
相關推薦:
mysql觸發器詳解
mysql觸發器簡介及如何創建和刪除觸發器
【原創】利用MySQL觸發器高性能造數據
以上就是Mysql觸發器在PHP項目中用來做信息備份、恢復和清空的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。