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を使用してカルーセル効果を実現する

推薦する

Windows システム mysql5.7.18 インストール グラフィック チュートリアル

Windows システム向け MySQL インストール チュートリアルダウンロード1. https:...

Ubuntu の仮想環境に Django をインストールする方法

Ubuntu コマンドライン ウィンドウで次の操作を実行します。 1. 仮想環境をインストールする...

Mysql 自己結合クエリ例の詳細な説明

この記事では、Mysql の自己結合クエリについて説明します。ご参考までに、詳細は以下の通りです。自...

Centos7.3 で mysql5.7.18 をインストールして初期パスワードを変更する方法

この記事では、Centos7.3でのmysql5.7.18のインストールと初期パスワードの変更につい...

CSS3で実装されたダイナミックな星空の背景

結果:実装コードhtml <link href='https://fonts.goog...

MySQL でのログインを取り消す

コンセプト紹介: MySQL の redo ログにはトランザクションの動作が記録されることはご存じの...

この記事ではJavaScriptの基本であるディープコピーとシャローコピーについて説明します。

目次浅いコピーディープコピー補充する要約するコピー(クローン、複製などとも呼ばれる)ですが、ディープ...

シンプルなナビゲーションバー機能を実現するHTML+CSS

さっそく、コードを見てみましょう(初心者:特に言うことはありません) <!DOCTYPE ht...

React構成サブルーティングの実装

1. コンポーネント First.js にはサブコンポーネントがあります。 './Admin...

HTML で入力テキスト入力キャッシュのクリアを禁止する 2 つの方法

ほとんどのブラウザはデフォルトで入力値をキャッシュし、ctl+F5 を使用して強制的に更新することに...

Linux での stat 関数と stat コマンドの使用法の詳細な説明

stat 関数と stat コマンドLinux ファイル内の [inode = インデックス ノード...

HTML テーブル タグ チュートリアル (34): 行スパン属性 ROWSPAN

複雑なテーブル構造では、一部のセルが水平方向に複数のセルにまたがるため、行間属性 ROWSPAN を...

Vueアイコンセレクターのサンプルコード

出典: http://www.ruoyi.vip/ 'vue' から Vue をイン...

SQL実装 LeetCode (176. 2番目に高い給与)

[LeetCode] 176. 2番目に高い給与従業員テーブルから 2 番目に高い給与を取得する ...

デスクトップ仮想化を実現するために Hyper-V を展開する手順 (グラフィック チュートリアル)

Hyper-V を展開するためのハードウェア要件は次のとおりです。 64 ビット プロセッサ、具体...