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

推薦する

Linux のファイル圧縮とパッケージ化の概要

1. 圧縮と包装の概要一般的な圧縮ファイルウィンドウズ .rar .zip .7z Linux .z...

MySQL の暗黙的な型変換によって発生するインデックス障害の解決策

目次質問再生暗黙的な変換要約する参照する質問仕事中、1 つの SQL クエリ ステートメントのみを実...

nginx でのリクエストのカウント追跡の簡単な分析

まずは適用方法を説明します。nginxモジュールにはjtxyとjtcmdの2つがあります。 http...

よく使われるCSSスタイル(レイアウト)の詳しい説明

新しいCSS3プロパティと互換性ありCSS3では、プラグインprefixfree.min.jsを使用...

JavaScript 配列重複排除ソリューション

目次方法1: set: データ型ではなくデータ構造であり、メンバーは一意である方法2: オブジェクト...

Vue3 でタイマーコンポーネントをカプセル化する方法

背景一部のショッピング モールの Web ページで商品の詳細を開くと、購入数量を選択するためのカウン...

vue+el-element でファイル名に応じてダイアログを動的に作成する実践

目次背景成し遂げる1. カプセル化された /utils/dialogControl.js 2.ダイア...

Nginx プロキシ axios リクエストと注意事項

序文最近、小さなデモを作成しました。大規模な工場のオンライン データを使用したため、インターフェイス...

MySQL最新バージョン8.0.17解凍版インストールチュートリアル

個人的にはインストール版よりも解凍版の方がインストールしやすいと思います。早速、解凍版のインストール...

1つの記事でTypeScriptのデータ型について学ぶ

目次基本タイプあらゆるタイプ配列タプルインタフェース関数自己推論を入力する結合タイプ(1つ以上選択)...

Linux で tcpdump コマンドを使用してデータ パケットをキャプチャおよび分析する方法の詳細な説明

序文tcpdump はよく知られたコマンドライン パケット分析ツールです。 tcpdump コマンド...

Centos8 (最小インストール) Python3.8+pip のインストール方法に関するチュートリアル

Python8のインストールを最小化した後、Python3.8.1をインストールしました。オンライン...

ルート変更を監視するJavaScriptの詳細な説明

目次歴史pushState() メソッドpushState() の使用シナリオreplaceStat...

音楽プレーヤーアプリ(アプリケーションソフトウェア)の分析と再設計 美しい音楽プレーヤーインターフェースの設計方法

無線インタラクションにずっと興味があったので、今回は実践してみようと思います〜この分析と評価は iO...

MySQL はどのようにしてマルチバージョンの同時実行性を実現するのでしょうか?

目次MySQL マルチバージョン同時実行1. マルチバージョン同時実行制御1. 一貫した読み取り2....