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

推薦する

タグが新しいページを開くかどうかという問題。主要ウェブサイトの開設状況をまとめました

a タグが新しいページを開くかどうか: (1)百度百科事典:ヘッダーが異なる場合は新しいページが開き...

Linux システムで Centos7 を使って ElasticSearch ミドルウェアと共通インターフェースを構築するデモ

1. ミドルウェアの紹介1. 基本概念ElasticSearch は Lucene をベースにした検...

Linux でログインタイムアウト後に非アクティブなユーザーを自動的にログアウトする

方法1: .bashrcまたは.bash_profileファイルを変更するこれは、ホーム ディレクト...

Nginx を使用して IP アドレスが悪意を持って解決されるのを防ぐ方法

Nginxを使用する目的Alibaba Cloud ECS クラウド サーバーを使用して、まずは著者...

VUEのデータプロキシとイベントの詳細な説明

目次Object.defineProperty メソッドのレビューデータブローカーとは何ですか? V...

Linux サーバーのクイックアンインストールとノード環境のインストール (簡単に始められます)

1.まずnpmをアンインストールする sudo npm アンインストール npm -g 2. ノー...

Linux mysql-5.6 でルート パスワードをリセットする方法

1. MySQL サービスが起動しているかどうかを確認します。起動している場合は、MySQL サービ...

Ubuntu 20.04 Firefox でビデオを再生できない (Flash プラグインがない) 場合の解決策

1. Flashプラグインパッケージのダウンロードアドレス: https://get.adobe.c...

CentOS 起動時にカーネルモジュール overlayfs 操作を自動的にロードする

CentOS でカーネル モジュールを自動的にロードするには、/etc/sysconfig/modu...

CSS クリアフロートクリア:both サンプルコード

今日はフロートのクリアについてお話します。フロートのクリアについてお話する前に、フロートとは何かを理...

JS ベースの Ajax 同時リクエスト制御を実装する方法

目次序文Ajax シリアルおよびパラレルAjaxの同時リクエスト制御のための2つのソリューションPr...

Vue フィルターの使用とタイムスタンプ変換の問題

目次1. 概念をすぐに認識する: 2. ローカルフィルター: 3. グローバルフィルター: 4. 拡...

MySQL データベース面接に必須の 3 つのログの紹介

目次1. redo ログ (MySQL ストレージ エンジン InnoDB のトランザクション ログ...

Dockerコンテナ起動時に固定IPを設定する実装

Dockerインストール後のネットワークタイプ [root@insure updev]# docke...

Docker イメージ + nginx を使用して Vue プロジェクトをデプロイする方法

1. Vueプロジェクトのパッケージ化開発されたvueプロジェクトに次の名前を入力し、パッケージ化し...