Mysql觸發器在PHP項目中用來做信息備份、恢復和清空

案例:

通過PHP后臺代碼可以將員工的信息刪除,將刪除的員工信息進行恢復(類似于從回收站中恢復員工信息),并且還可以將已經刪除的員工進行清空(類似于清空回復站的功能)。本文主要介紹了mysql觸發器在PHP項目中用來做信息備份、恢復和清空的相關資料,需要的朋友可以參考下。

思路:

要有一張員工表,還要有一張員工備份表;備份,使用觸發器,在點擊刪除按鈕執行刪除功能之前將員工表中的信息導入到備份表中,這樣就達到了備份的效果;恢復,對備份表使用觸發器,將備份表中的數據刪除,刪除的同時將此數據導入到員工表中;清空,使用truncate方法,將備份表中的數據徹底清空,并且釋放內存,而且這個方法進行數據刪除不會調用觸發器。話不多少,直接上干貨。

第一步:建表,員工表,員工備份表。

立即學習PHP免費學習筆記(深入)”;

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觸發器詳解

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享