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 runコンテナの自動終了の解決策

今日、Dockerfile を使用してイメージを作成したときに問題が発生し、イメージの実行後にコンテ...

LinuxでSVNサーバーを構築する方法

1: SVNをインストールする yum インストール -y サブバージョン2. 倉庫を作る1: 倉庫...

Better-scrollはメニューとコンテンツをリンクする効果を実現します

1. 基本的な使い方 <!DOCTYPE html> <html lang=&qu...

高度な CSS の 3 つの方法を使用して複数行の省略を実装するサンプル コード

序文これは古くからの要望ですが、オンラインで解決策を探している人はまだ多く、特に検索結果の上位にラン...

MySQL 8.0 パスワード有効期限ポリシーの詳細な説明

MySQL 8.0.16 以降では、パスワードの有効期限ポリシーを設定できます。今日は、この小さな知...

美しいHTMLコードの書き方

美しい HTML コードの外観 美しい HTML コードの書き方。外国人が書いた記事: 美しい HT...

Tomcatがセッションを管理する方法の例

ConcurrentHashMapを学習しましたが、どのように適用すればよいかわかりませんか? To...

React 入門レベルの詳細なメモ

目次1. Reactの基本的な理解1. はじめに2. Reactの特徴3. Reactが効率的な理由...

Navicat の MySQL へのリモート接続の実装手順の分析

序文皆さんはリモート サーバーで開発を行っており、MySQL の使用率はかなり高いはずです。コマンド...

AngularパイプラインPIPEの紹介と使い方

序文PIPE、パイプラインと翻訳されます。 Angular パイプは、HTML コンポーネントで宣言...

Docker コンテナのタイムゾーン エラーの問題

目次背景質問問題分析と解決策新たな問題問題分析と解決策背景node-schedule スケジュール ...

MySQL 5.7 における基本的な JSON 操作ガイド

序文プロジェクトのニーズにより、ストレージ フィールドは JSON 形式で保存されます。プロジェクト...

TypeScript におけるインターフェースと型メソッドの正しい使用例

目次序文インタフェースタイプ付録: インターフェースとタイプの違い要約する序文インターフェースとタイ...

HTMLフォームアプリケーションにはチェックボックスとラジオボタンの使用が含まれます

チェックボックスやラジオボタンの使用を含むコードをコピーコードは次のとおりです。 <!DOCT...

HTMLページの文字セットを指定する2つの方法

1. HTMLページの文字セットを指定する2つの方法方法1: <メタ文字セット="u...