MySQLトリガーはPHPプロジェクトで情報のバックアップ、復元、クリアに使用されます。

MySQLトリガーはPHPプロジェクトで情報のバックアップ、復元、クリアに使用されます。

例:

PHP バックグラウンド コードを通じて、従業員情報を削除したり、削除した従業員情報を復元したり (ごみ箱から従業員情報を復元するのと同様)、削除した従業員をクリアしたり (返信ステーションのクリア機能と同様) することができます。

アイデア:

従業員テーブルと従業員バックアップ テーブルが必要です。バックアップの場合、トリガーを使用して従業員テーブルの情報をバックアップ テーブルにインポートしてから、削除ボタンをクリックして削除機能を実行し、バックアップ効果を実現します。リカバリの場合、バックアップ テーブルのトリガーを使用してバックアップ テーブルのデータを削除し、同時に従業員テーブルにデータをインポートします。クリアの場合、切り捨てメソッドを使用してバックアップ テーブルのデータを完全にクリアし、メモリを解放します。このメソッドは、データ削除用のトリガーを呼び出しません。これ以上前置きはせずに、早速本題に入りたいと思います。

ステップ 1: テーブル、従業員テーブル、従業員バックアップ テーブルを作成します。

テーブル「従業員」を作成します(
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `denumber` varchar(255) デフォルト '0',
 `idnumber` varchar(255) デフォルト '0',
 `worknumber` varchar(255) デフォルト '1',
 `pwd` varchar(255) デフォルト NULL,
 `emname` varchar(255) デフォルト '0',
 `tel` varchar(255) デフォルト '0',
 `salary` int(255) デフォルト '0',
 `entrytime` varchar(255) デフォルト '0',
 `orderpaixu` int(255) デフォルト '1',
 主キー (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=100 デフォルトCHARSET=utf8

これは従業員リストです

テーブル `employeebackup` を作成します (
 `id` int(11) NULLではない、
 `denumber` varchar(255) デフォルト NULL,
 `idnumber` varchar(255) デフォルト NULL,
 `worknumber` varchar(255) デフォルト NULL,
 `pwd` varchar(255) デフォルト NULL,
 `emname` varchar(255) デフォルト NULL,
 `tel` varchar(255) デフォルト NULL,
 `salary` int(255) デフォルト NULL,
 `entrytime` varchar(255) デフォルト NULL,
 `orderpaixu` int(255) デフォルト NULL,
 `deletetime` datetime デフォルト NULL、
 主キー (`id`)
) エンジン=MyISAM デフォルト文字セット=utf8

従業員バックアップ テーブルには、削除時間を記録するための deletetime という追加フィールドがあります。

ステップ 2: 従業員テーブルのトリガーをバックアップして作成し (トリガーの詳細については、私の他のブログ http://www.cnblogs.com/liebagefly/p/7517998.html を参照してください)、従業員テーブルの情報をバックアップ テーブルにインポートしてから、削除ボタンをクリックして削除機能を実行します。

トリガーSQLコード:

従業員の削除前に deletesemployee トリガーを作成する
各行ごとに
始める 
 employeebackup に挿入 (id、denumber、idnumber、worknumber、pwd、emname、tel、salary、entrytime、orderpaixu、deletetime)
値(OLD.id、OLD.denumber、OLD.idnumber、OLD.worknumber、OLD.pwd、OLD.emname、OLD.tel、OLD.salary、OLD.entrytime、OLD.orderpaixu、NOW());
終わり

PHP バックグラウンド メソッド、使用するフレームワークは yii2 です。

 パブリック関数 actionEmployeedel($id)
 {
  従業員::findOne($id)->delete();
  $this->redirect(['employeemanage']); を返します。
 }

ステップ 3: 復元し、削除された情報を復元し、バックアップ テーブルでトリガーを使用し、バックアップ テーブルのデータを削除し、削除しながら従業員テーブルにデータをインポートします。

トリガーSQLコード:

employeebackup の削除前に、create トリガー deletesemployeebackup を作成します。
各行ごとに
始める 
  従業員に挿入 (ID、従業員番号、ID番号、勤務番号、パスワード、従業員名、電話番号、給与、出勤時刻、注文金額)
値(OLD.id、OLD.denumber、OLD.idnumber、OLD.worknumber、OLD.pwd、OLD.emname、OLD.tel、OLD.salary、OLD.entrytime、OLD.orderpaixu);
終わり

PHPコード

パブリック関数 actionRecoveremployeedel($id)
 {
  従業員バックアップ::findOne($id)->delete();
  $this->redirect(['recoveremployee']); を返します。
 }

バックアップに加えて、クリア機能も必要な場合があります。バックアップ テーブルのデータを完全にクリアし、メモリを解放するには、truncate メソッドを使用します。このメソッドは、データ削除のトリガーを呼び出しません。

Yii2 のバックグラウンドで SQL を呼び出す本来の方法は、削除されたすべてのユーザーをクリアすることです。

パブリック関数 actionDropemployeedel()
{
 Yii::$app->db->createCommand('employeebackup テーブルを切り捨てる')
  -> 実行();
 $this->redirect(['recoveremployee']); を返します。
}

上記は、小規模プロジェクトでの MySQL トリガーの簡単な使用法です。

以下もご興味があるかもしれません:
  • MySQLトリガーについて深く理解するための記事
  • MySQLトリガーの使用
  • MySQLデータベーストリガーの詳細な説明
  • MySQL トリガー構文とアプリケーション例
  • MySql ビュー トリガー ストアド プロシージャの詳細な説明
  • バックアップと削除のためにリアルタイムでステートメントを検出するMySQLトリガーの考え方の詳細な説明

<<:  Apache、Tomcat、Nginx サーバーの詳細な理解と比較分析

>>:  Nodejs 探索: シングルスレッドの高並行性の原理を深く理解する

推薦する

純粋な CSS3 マインドマップ スタイルの例

マインドマップ彼はおそらく次のように見えるでしょう: インターネット上の実装のほとんどは d3.js...

alpineをベースにdockerfileで作成したクローラーScrapyイメージの実装

1.アルパインイメージをダウンロードする [root@DockerBrian ~]# docker ...

MySQL の一般的な SQL ステートメントの概要

1. mysqlエクスポートファイル: SELECT `pe2e_user_to_company`....

Linux における nohup と & の使い方と違いの詳細な説明

例:例として、Python コード loop_hello.py を使用します。このコードは、ループ回...

MySQL 5.7.18 リリース インストール ガイド (bin ファイル バージョンを含む)

インストール プロセスは、コンパイル手順を除いて、基本的にソース バージョンと同じです。この記事では...

MySQL サーバー IO 100% 分析および最適化ソリューション

序文ストレス テスト中に、リソース使用のボトルネックによって発生する最も直接的なパフォーマンスの問題...

JavaScriptのイベントループの仕組みの分析

目次序文: 1. イベント ループとタスク キューの理由: 2. イベントループメカニズム: 3. ...

Mysql は null 値の first/last メソッドの例を実装します

序文MySQL が SQL SELECT コマンドと WHERE 句を使用してテーブルからデータを読...

Docker共通コマンドの詳しい解説 Study03

目次1. ヘルプコマンド2. ミラーコマンド3. コンテナコマンド1. ヘルプコマンド1. 現在のD...

HTML スペースコードの簡単な分析

HTML についてどれくらい知っていますか? 現在、基本的な HTML コードを学習している場合は、...

7つのMySQL JOINタイプのまとめ

始める前に、これから紹介する JOIN タイプを示すために 2 つのテーブルを作成します。テーブルを...

Vue のフィルターウィジェットの詳細な使用方法

この記事では、参考までにVue More Filter Itemウィジェットの実装方法を例として紹介...

シンプルなページカウントダウンを実現するJavaScript

この記事では、参考までに、シンプルなページカウントダウンを実装するためのJavaScriptの具体的...

表面的なウェブデザイン

<br />私はいつもYahooのウェブデザインが素晴らしいと信じてきました。しかし、こ...

HTML テーブル タグ チュートリアル (47): ネストされたテーブル

<br />このページでは、テーブルをネストすることで組版を実現しています。つまり、1 ...