MySQL ログトリガー実装コード

MySQL ログトリガー実装コード

SQL文

ドロップトリガー
もし
sys_menu_edit が存在します。
各行のsys_menuの更新前にトリガーsys_menu_editを作成します。
始める
`g4m`.`sys_log` に INSERT します ( `table_name`、 `val_id`、 `data_json` )
価値観
(
'システムメニュー',
古い.id、
連結(
"{",
CONCAT_WS(
',',
CONCAT_WS( 古い.id, '"id":"', '"' ),
CONCAT_WS( 古い.CODE, '"コード":"', '"' ),
CONCAT_WS( 古い.type_dic, '"type_dic":"', '"' ),
CONCAT_WS( old.NAME, '"name":"', '"' ),
CONCAT_WS( 古い.pid, '"pid":"', '"' ),
CONCAT_WS( 古い.status_dic, '"status_dic":"', '"' ),
CONCAT_WS( 古い.url, '"url":"', '"' ),
CONCAT_WS( 古いパス、 '"パス":"'、 '"' )、
CONCAT_WS( 古いアイコン、 '"アイコン":"'、 '"' )、
CONCAT_WS( 古い.sort, '"sort":"', '"' ),
CONCAT_WS( 古い.注釈, '"注釈":"', '"' ),
CONCAT_WS( old.create_time, '"create_time":"', '"' ),
CONCAT_WS( 古い.modify_uer_id, '"modify_uer_id":"', '"' ),
CONCAT_WS( 古い.modify_time, '"modify_time":"', '"' )
)、
"}"
)
);

MySQLはトリガーを使用してログを実装します

news に INSERT した後に、トリガー news_log を作成します。

各行を `news_logs` に挿入し、news から *, now() を選択して、newsid = (select max(newsid ) from news); を実行します。

トリガー news_log を削除します。

テーブルは全部で 2 つあり、1 つは元のテーブル news、もう 1 つはログ テーブル news_logs (日付列が追加されている) です。このテーブルでは、コードを記述しなくても、新しいエントリが挿入されたときに自動的にログを記録できます。 同様に、更新時に更新ログを挿入することもできます。詳細については、MySQL のドキュメントを参照してください。

mysqlはトリガーを使用して操作を記録します

MySQL では、1 つのトリガーで挿入、更新、削除の操作を実行することはできません。3 つのトリガーを個別に作成する必要があります。

挿入トリガー:

区切り文字 $$
トリガー tri_city_insert を作成する
挿入後 
t_xfw_city で 
各行ごとに
始める
  t_tri_city(id,name,provinceid,ctype) に挿入します 
  値(新しいID、新しい名前、新しい州ID、1);
終わり

更新トリガー:

区切り文字 $$
トリガー tri_city_update を作成する
アップデート後 
t_xfw_city で 
各行ごとに
始める
  t_tri_city(id,name,provinceid,ctype) に挿入します 
  値(新しいID、新しい名前、新しい州ID、2);
終わり

削除トリガー:

区切り文字 $$
トリガー tri_city_delete を作成する
削除後 
t_xfw_city で 
各行ごとに
始める
  t_tri_city(id,name,provinceid,ctype) に挿入します 
  値(old.id、old.name、old.provinceid、3);
終わり

1つのテーブルに対して3つのトリガーを作成するのはちょっと面倒です。もっと良い方法はないでしょうか。

以下もご興味があるかもしれません:
  • MySQLトリガーの例の詳細な説明
  • MySQLトリガーの簡単な概要と例
  • MySQLトリガーについて深く理解するための記事
  • MySQLトリガーの使用
  • MySQL トリガーの追加、削除、変更、クエリ操作の例
  • MySQLトリガーの使用

<<:  MySQL で group by を使用すると常にエラー 1055 が発生します (推奨)

>>:  ボタンをクリックして画像を切り替える JavaScript

推薦する

OpenLayersはポイントフィーチャーレイヤーの集約表示方法を実現します

目次1. はじめに2. ポイントフィーチャーレイヤーの集約3. 重合の特殊処理4. 重合の特殊処理 ...

Dockerはrabbitmqのサンプルコードをインストールして実行します

イメージをプルします: [mall@VM_0_7_centos ~]$ sudo docker pu...

dockerにros2をインストールするための詳細な手順

目次メイントピック1. UbuntuにDockerをインストールする2. DockerにROS2-F...

IE6かどうかを判定する最短JS(IEの書き方)

ブラウザが IE のどのバージョンであるかを検出するためによく使用される JavaScript コー...

ウェブページ読み込み時に左右にジャンプする原因の分析と解決

最近、ウェブサイトを設計するときにこの問題に遭遇しています。メンバーセンターを設計し、コンテンツを ...

MySQL 5.7 解凍版のインストールとアンインストール、およびよくある問題の概要

1. インストール1. ダウンロードMySQLをダウンロードするには、MySQL公式サイトhttp:...

Tableとdivの簡単な紹介と使い方

ウェブフロントエンド1学生証名前性別年01張三男20 02李思女性21総人数60フォームのコンポーネ...

MySQL InnoDBセカンダリインデックスのソート例の詳細な説明

ソート問題最近、Geek Time の「45 Lectures on MySQL Practice」...

JS 手ぶれ補正機能の実装と使用シナリオ

目次1. 手ぶれ補正機能とは何ですか? 1. なぜ手ぶれ補正機能が必要なのでしょうか? 2. 手ぶれ...

Win10 64ビットMySQL8.0のダウンロードとインストールのチュートリアル図

公式サイトから MySQL をダウンロードしてインストールし、クライアントにログインするにはどうすれ...

HTML コード例: ハイパーリンクの詳細な説明

ハイパーリンクは、Web サイト上のすべてのページがハイパーリンクで接続され、ページ間を移動できるた...

古典的なJavaScriptの再帰ケースの質問の詳細な分析

目次再帰とは何ですか?また、どのように機能しますか? 1. 合計(1)デジタル加算(2)配列の和2....

Linux で Golang をインストールする方法

Go は、シンプルで信頼性が高く、効率的なソフトウェアを簡単に構築できるオープンソース プログラミン...

ウェブサイトのBGM実装方法

個々のウェブマスターにとって、自分のウェブサイトをいかにユニークで個性あふれるものにするかは、常に絶...