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

推薦する

JSにおけるデータ型の正しい判定方法の例

目次序文typeof は型を正しく判別できますか? instanceof は型を正しく判別できますか...

ボタンに醜い灰色の枠線が付いています。これを削除するにはどうすればよいですか?

ダイアログをクロージャで使用し、右上隅の向こう側に閉じるボタンがあるダイアログを描画しました。ボタン...

MySQL における主キーが 0 であることと主キーの自己選択制約の関係についての詳しい説明 (詳細)

序文この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために...

MySQL でデータを削除してもテーブル ファイルのサイズが変更されないのはなぜですか?

長期間稼働しているデータベースの場合、テーブルがストレージ領域を占有しすぎるという問題がよく発生しま...

珍しいけれど役に立つJSテクニックをいくつか紹介します

序文プログラミング言語には通常、さまざまな隠されたトリックが含まれており、これらのトリックを上手に使...

jsネイティブカルーセルプラグインの制作

この記事では、jsネイティブカルーセルプラグインの具体的なコードを参考までに共有します。具体的な内容...

MySQL の主キーとトランザクションの詳細な説明

目次1. MySQLの主キーとテーブルフィールドに関するコメント1. 主キーと自動増分2. テーブル...

MySQL 8.0 の新しいリレーショナル データベース機能の詳細な説明

序文MySQL 8.0 の最新バージョンは 8.0.4 rc であり、正式版は近日中にリリースされる...

Vueのキャッシュ方法の例の詳細な説明

最近、「フロントエンドキャッシュ」という新しい要件が作成されました要件背景: フォームへの高頻度の繰...

無効な Nginx クロスドメイン設定 Access-Control-Allow-Origin の解決策

nginx バージョン 1.11.3次の構成を使用すると、検証は無効になり、クロスドメインの問題が依...

Vue Nativeを使用したモバイルアプリケーションの構築プロセスの完全な記録

目次序文Vue Nativeの機能宣言的レンダリング双方向バインディングVue.js エコシステムの...

Vueはシンプルな虫眼鏡効果を実装します

この記事では、参考までに、簡単な虫眼鏡効果を実現するためのVueの具体的なコードを紹介します。具体的...

MySQLクエリのソートとページング関連

概要通常、データベース内のデータを直接表示することは望ましくないため、最後の 2 つのセクションでは...

長いデータを HTML で表示するときに処理する方法

HTML で長いデータを表示する場合、マウスをその上に移動するとデータを切り捨てて完全なデータを表示...

Vueモバイル端末の適応化問題の詳細説明

1. vue uiでプロジェクトを作成する 2. 基本設定項目を選択する 3. プロジェクトを実行す...