Heim > Datenbank > MySQL-Tutorial > Hauptteil

MySQL-Trigger werden in PHP-Projekten zum Sichern, Wiederherstellen und Löschen von Informationen verwendet

小云云
Freigeben: 2017-12-08 09:17:53
Original
1735 Leute haben es durchsucht

Fall:

Über den PHP-Hintergrundcode können Mitarbeiterinformationen gelöscht und die gelöschten Mitarbeiterinformationen wiederhergestellt werden (ähnlich wie bei der Wiederherstellung von Mitarbeiterinformationen aus dem Papierkorb). Sie können auch gelöschte Mitarbeiter löschen (ähnlich der Funktion zum Löschen der Antwortstation). In diesem Artikel werden hauptsächlich die relevanten Informationen vorgestellt, die von MySQL-Triggern zum Sichern, Wiederherstellen und Löschen von Informationen in PHP-Projekten verwendet werden.

Idee:

Es müssen eine Mitarbeitertabelle und eine Mitarbeitersicherungstabelle vorhanden sein, Trigger verwenden und Mitarbeiter löschen, bevor auf die Schaltfläche „Löschen“ geklickt wird, um die Löschfunktion auszuführen Die Informationen in der Tabelle werden in die Sicherungstabelle importiert, wodurch der Sicherungseffekt erzielt wird. Verwenden Sie zum Wiederherstellen einen Auslöser für die Sicherungstabelle, um die Daten in der Sicherungstabelle zu löschen, und importieren Sie die Daten beim Löschen in die Mitarbeitertabelle , verwenden Die Truncate-Methode löscht die Daten in der Sicherungstabelle vollständig und gibt den Speicher frei. Diese Methode ruft keine Trigger zum Löschen von Daten auf. Es gibt nicht viel zu sagen, nur das Praktische.

Schritt eins: Erstellen Sie Tabellen, Mitarbeitertabellen und Mitarbeiter-Sicherungstabellen.


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
Nach dem Login kopieren


Das ist die Mitarbeitertabelle


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
Nach dem Login kopieren


Die Mitarbeiter-Backup-Tabelle verfügt über ein zusätzliches Feld deletetime, um den Löschzeitpunkt zu erfassen

Schritt 2: Sichern und erstellen Sie einen Trigger für die Mitarbeitertabelle (für Informationen zu Triggern). , schauen Sie sich bitte meinen anderen Blog (http://www.cnblogs.com/liebagefly/p/7517998.html) an, der die Informationen in der Mitarbeitertabelle in die Sicherungstabelle importiert, bevor Sie auf die Schaltfläche „Löschen“ klicken, um die Löschfunktion auszuführen.

Trigger-SQL-Code:


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
Nach dem Login kopieren


PHP-Hintergrundmethode, das von mir verwendete Framework ist yii2.


 public function actionEmployeedel($id)
 {
  Employee::findOne($id)->delete();
  return $this->redirect(['employeemanage']);
 }
Nach dem Login kopieren


Schritt 3: Wiederherstellung, Wiederherstellung der gelöschten Informationen, Verwendung von Triggern für die Sicherungstabelle und Wiederherstellung der gelöschten Informationen im Backup Löschen Sie die Daten und importieren Sie diese Daten beim Löschen in die Mitarbeitertabelle.

Trigger-SQL-Code:


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
Nach dem Login kopieren


PHP-Code


public function actionRecoveremployeedel($id)
 {
  Employeebackup::findOne($id)->delete();
  return $this->redirect(['recoveremployee']);
 }
Nach dem Login kopieren


Zusätzlich zur Sicherung ist manchmal auch die Löschfunktion erforderlich, um die Daten in der Sicherungstabelle vollständig zu löschen und den Speicher freizugeben. und diese Methode zum Löschen von Daten ruft den Trigger nicht auf.

Die ursprüngliche Schreibmethode von SQL wird im Hintergrund von yii2 aufgerufen, wodurch alle gelöschten Benutzer gelöscht werden.


public function actionDropemployeedel()
{
 Yii::$app->db->createCommand('truncate table employeebackup')
  ->execute();
 return $this->redirect(['recoveremployee']);
}
Nach dem Login kopieren

Wie hast du es gelernt? Wenn es nützlich ist, sammeln Sie es schnell ein.

Verwandte Empfehlungen:

Detaillierte Erklärung von MySQL-Triggern

Einführung in MySQL-Trigger und wie man Trigger erstellt und löscht

[Original] Verwenden Sie MySQL-Trigger, um Daten mit hoher Leistung zu erstellen

Das obige ist der detaillierte Inhalt vonMySQL-Trigger werden in PHP-Projekten zum Sichern, Wiederherstellen und Löschen von Informationen verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage