MysqlフリップフロップはPHPプロジェクトで情報のバックアップ、復旧、クリアをするために使用されます。

3676 ワード

ケース:
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
従業員のバックアップ表、一つのフィールドが多くなりました。削除時間を記録するために。
第二ステップ:バックアップは、従業員テーブルにトリガーを作成し(トリガーに関する資料は私のブログを見ることができます。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バックの使い方は、私が使っているフレームはyii 2です。

 public function actionEmployeedel($id)
 {
  Employee::findOne($id)->delete();
  return $this->redirect(['employeemanage']);
 }
ステップ3:回復し、削除した情報を復元し、バックアップテーブルにトリガーを使用して、バックアップテーブルのデータを削除し、削除しながら、このデータを従業員テーブルに導入します。
トリガー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方法を使って、バックアップテーブルのデータを完全に空にして、メモリを解放します。また、この方法でデータを削除すると、トリガーを起動しません。
ii 2のバックグラウンドでsqlの元の書き方を呼び出し、削除されたすべてのユーザが空になります。

public function actionDropemployeedel()
{
 Yii::$app->db->createCommand('truncate table employeebackup')
  ->execute();
 return $this->redirect(['recoveremployee']);
}
以上はmysql触発器の小さいプロジェクトの中の1つの簡単な使用法です。