MySQL トリガー構文とアプリケーション例

MySQL トリガー構文とアプリケーション例

この記事では、例を使用して MySQL トリガーの構文とアプリケーションを説明します。ご参考までに、詳細は以下の通りです。

例: テーブルの追加、削除、変更操作を記録するトリガーを作成する

// ユーザー テーブルを作成します。
`user` が存在する場合はテーブルを削除します。
テーブル `user` を作成します (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `account` varchar(255) デフォルト NULL,
 `name` varchar(255) デフォルト NULL,
 `address` varchar(255) デフォルト NULL,
 主キー (`id`)
)ENGINE=InnoDB デフォルト文字セット=utf8;
 
// ユーザー テーブル操作の履歴テーブルを作成します。DROP TABLE IF EXISTS `user_history`;
テーブル `user_history` を作成します (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `user_id` bigint(20) NULLではない、
 `operatetype` varchar(200) NOT NULL,
 `operatetime` 日時 NOT NULL、
 主キー (`id`)
)ENGINE=InnoDB デフォルト文字セット=utf8;

DELIMITER: 入力ターミネータを変更します。デフォルトでは、入力ターミネータはセミコロン; です。ここでは、2 つのセミコロン;; に変更します。この目的は、デフォルトのセミコロン ターミネータに遭遇したときに自動的に実行するのではなく、セミコロンを含む複数のステートメントをカプセル化し、すべて入力された後にまとめて実行することです。

  • 新規: 挿入および更新イベントがトリガーされたときに使用可能で、操作対象のレコードを指します。
  • old: 削除および更新イベントがトリガーされたときに使用可能で、操作対象のレコードを指します。

入れる:

`tri_insert_user` が存在する場合はトリガーを削除します。
区切り文字 ;;
行ごとに `user` の INSERT 後に `tri_insert_user` トリガーを作成します
  user_history(user_id, operatype, operatime) に INSERT INTO VALUES (new.id, 'ユーザーを追加', now());
終わり
;;
区切り文字 ;

アップデート:

`tri_update_user` が存在する場合はトリガーを削除します。
区切り文字 ;;
各行の「user」の更新後に「tri_update_user」トリガーを作成します。
  INSERT INTO user_history(user_id,operatetype,operatetime) VALUES (new.id, 'ユーザーを更新する', now());
終わり
;;
区切り文字 ;

消去:

`tri_delete_user` が存在する場合はトリガーを削除します。
区切り文字 ;;
各行の「user」の削除後に「tri_delete_user」トリガーを作成します。
  INSERT INTO user_history(user_id, operatype, operatime) VALUES (old.id, 'ユーザーを削除', now());
終わり
;;
区切り文字 ;

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQLトリガーの使用と理解
  • MySQLデータベーストリガーの詳細な説明
  • MySQL トリガーの原理と使用例の分析
  • MySQL トリガーの使用方法と利点と欠点の紹介

<<:  Alibaba Cloud Server にセキュリティ グループ ルールを追加する詳細な説明 (グラフィック チュートリアル)

>>:  jsを使用してカルーセル効果を実現する

推薦する

Docker に共通コンポーネント (mysql、redis) をインストールする方法

Dockerはmysqlをインストールします docker search mysql 検索 dock...

海外の無料写真素材サイトベスト9

良い画像素材のウェブサイトを見つけるのは難しいです。特に無料です。良い写真には非常に目を引く視覚効果...

Linuxのlocateコマンドの使い方

01. コマンドの概要実際には、locate コマンドは find -name の別の書き方ですが、...

MySQL sql_mode の使用に関する詳細な説明

目次序文sql_mode の説明最も重要なオプションすべてのオプション要約する序文前回の記事「MyS...

JSはjQueryのappend関数を実装します

目次コードを見せてください効果をテストする効果追伸別のアプローチコードを見せてください HTMLEl...

js での typeof の使い方を理解するための記事

目次ベース戻り値の型文字列とブール値数値とbigintシンボル未定義関数物体他のよくある質問参照エラ...

Vue バッチ更新 DOM 実装手順

目次シーン紹介深い応答性トリガーゲッターDep.targetを探すゲッターセッター要約するシーン紹介...

Apacheドメイン名設定の落とし穴の詳細な説明

私はApacheを使ったことがありません。仕事を始めてからはずっとnginxを使っていました(運用保...

href をクリックした後にページがジャンプしないようにするための空のリンクの正しい書き方 # 問題

リンクを使用する必要がある場合もありますが、リンクする必要はありません。onclick イベントを処...

タブバーの切り替え効果を実現するJavaScript

タブバー: 異なるタブをクリックすると異なるコンテンツが表示され、クリックしたタブのスタイルが変更さ...

MySQLログに関する知識のまとめ

目次SQL実行順序ビンログ何ですかいつ生産されるのか何の役に立つんだディスクはいつドロップされますか...

WeChatアプレットはウォーターフォールフローのページングスクロール読み込みを実装します

この記事では、WeChatアプレットのウォーターフォールフローページングスクロールロードを実装するた...

JSはじゃんけんゲームを実装します

この記事の例では、じゃんけんゲームを実装するためのJSの具体的なコードを参考までに共有しています。具...

JSはreduce()メソッドを使用してツリー構造データを処理します

目次意味文法例1. 初期値initが渡されない2. 初期値を渡す場合3. アレイの重複排除4. Re...

Dockerコンテナアプリケーションログの表示方法

docker アタッチコマンドdocker attach [options] 容器実行中のコンテナに...