MysqlフリップフロップはPHPプロジェクトで情報のバックアップ、復旧、クリアをするために使用されます。
ケース:
PHPバックコードにより、従業員の情報を削除し、削除した従業員情報を元に戻すことができます。また、削除した従業員を空にすることもできます。
考え方:
従業員表が必要で、従業員のバックアップ表が必要です。バックアップ、フリップフロップを使用して、削除ボタンをクリックして削除機能を実行する前に、従業員テーブルの情報をバックアップテーブルに導入して、バックアップの効果を達成しました。バックアップテーブルにフリップフロップを使用して、バックアップテーブルのデータを削除し、削除しながらこのデータを従業員テーブルに導入します。クリアして、truncate方法を使って、バックアップテーブルのデータを完全に空にして、メモリを解放します。また、この方法でデータを削除すると、トリガーを起動しません。話は多くなくて、直接に乾物に行きます。
第一歩:表を作って、従業員の表、従業員のバックアップ表。
第二ステップ:バックアップは、従業員テーブルにトリガーを作成し(トリガーに関する資料は私のブログを見ることができます。http://www.cnblogs.com/liebagefly/p/7517998.html)、削除ボタンをクリックして削除機能を実行する前に、従業員テーブルの情報をバックアップテーブルに導入します。
トリガーsqlコード:
トリガーsqlコード:
ii 2のバックグラウンドでsqlの元の書き方を呼び出し、削除されたすべてのユーザが空になります。
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つの簡単な使用法です。