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

推薦する

MySQL 5.6.22 のインストールと設定方法のグラフィックチュートリアル

このチュートリアルでは、MySQL5.6.22のインストールと設定方法の具体的なコードを参考までに共...

MySQL のデータ統計に関するヒント

よく使用されるデータベースである MySQL では、多くの操作が必要です。デジタル操作には非常に便利...

ソフトウェア 404 と 404 エラーとは何か、またそれらの違いは何ですか

まず、404 とソフト 404 とは何でしょうか? 404: 簡単に言えば、ユーザーが存在しないペー...

クールなバーコードエフェクトの作り方を教えます

声明:この記事では、Web ページ制作技術を使用して問題を包括的に解決するという考え方を反映して、W...

jQuery プロジェクトで重複送信を防ぐ方法

新しいプロジェクトでは、axios によって重複した送信を防ぐことができますが、古いプロジェクト (...

JS 実用的なオブジェクト指向スネークゲームの例

目次考える1. 貪欲な蛇の効果画像2. スネークの分析2.1 ゲーム開始機能2.2 運動機能2.2....

ReactのsetStateがマクロタスクなのかマイクロタスクなのかについて詳しく話しましょう

目次序文面接官は適切な質問をしていますか? § React は setState をどのように制御し...

CentOS 7.4 にソースコードから MySQL 8.0 をインストールするための詳細なチュートリアル

目次1. 環境2. 準備3. MySQL 8.0.11をインストールするMySQL 8 の公式バージ...

Vite2.0の落とし穴

目次Viteプロジェクトビルドの最適化他のやっとこれは前回の記事の補足です。設定プロジェクトで遭遇し...

PSを使用して2分でxhtml+cssウェブサイトのホームページを作成します

xhtml+css のウェブサイト再構築、ウェブ標準などについては、記事が多すぎるので繰り返しません...

SQL 実践演習: オンライン モール データベースの製品カテゴリ データ操作

オンラインショッピングモールデータベース - 商品カテゴリデータ操作(I)プロジェクトの説明電子商取...

フォームから Vue ElementUI を使用してログイン効果を実装する例

目次1. ElementUIで基本的なスタイルを構築する2. [送信]ボタンをクリックして、アカウン...

mysqlのデータディレクトリ内のファイルを直接コピーしてデータを復元する実装

mysqlはデータディレクトリ内のファイルをコピーしてデータを復元します背景: MySQL がクラッ...

Linux seqコマンドの使い方

1. コマンドの紹介seq (シーケンス) コマンドは、指定されたステップ サイズに従って、開始番号...