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

推薦する

CSS3 フィルターの違いと応用の詳しい説明:ドロップシャドウフィルターとボックスシャドウ

標準 CSS3 を使用して要素の影の効果を実現するには、2 つの手順があります。1 つ目は一般的なb...

マルチコア CPU を使用して Linux コマンドを高速化する方法 (GNU Parallel)

非常に大量のデータ(数百 GB)を計算する必要があったことはありますか?または、その内部を検索したり...

v-html レンダリング コンポーネントの問題

以前 HTML を解析したことがあるので、今日は Vue ドラッグ アンド ドロップを使用して、Ku...

MySQL で datetime 型のデフォルト値を設定する方法

Navicat クライアントを通じてデフォルトの日時値を変更する際に問題が発生しました。データベース...

jsイベント委譲の詳細な説明

1. 各関数はオブジェクトであり、メモリを占有します。メモリ内のオブジェクトが増えるほど、パフォーマ...

React diffアルゴリズムソースコード分析

目次単一ノード差分単一要素を調整するマルチノード差分調整子配列ノードが移動したかどうかを判断するには...

MySQL データベースのデータ テーブルの最適化、外部キーの分析、3 つのパラダイムの使用

この記事では、例を使用して、MySQL データベースのデータ テーブルの最適化、外部キーの使用、およ...

Linux のさまざまなロックメカニズムの使用方法と違いについて詳しく説明します

序文:この知識を理解する必要がある人は、すでにプロセス間通信とスレッド間通信の基本的な理解を持ってい...

イメージのパッケージ化とワンクリック展開を実現するためにDockerを組み合わせたアイデア

1. サーバーにDockerをインストールする yumでdockerをインストール設定ファイルを変更...

JavaScriptはシンプルな日付効果を実装します

JavaScriptの日付エフェクトの具体的なコードは参考用です。具体的な内容は次のとおりです。コー...

DockerがMySQL構成実装プロセスを開始

目次実際の戦闘プロセスまずは主なコマンドと詳細を一つずつ説明しましょう起動が成功したかどうかを確認す...

Vueは適切なスライドアウトレイヤーアニメーションを実装します

この記事では、適切なスライドアウトレイヤーアニメーションを実装するためのVueの具体的なコードを例と...

VM VirtualBox 仮想マシンのマウント共有フォルダ

一つの環境CentOS 7にVMware Toolsをインストールしてホストの共有フォルダへのアクセ...

MySQL5.7.03 上位バージョンから MySQL 5.7.17 への置き換えインストール プロセスと見つかった問題の解決策

1. インストール方法は? 1. [実行] -> [cmd] と入力して、小さな黒いウィンドウ...

VMWare 仮想マシン 15.X LAN ネットワーク構成チュートリアル図

最近、分散型およびビッグデータ技術について学ぶために、いくつかの仮想マシンに取り組んでいます。まず、...