MySQLトリガーの詳細な説明と簡単な例

MySQLトリガーの詳細な説明と簡単な例

MySQLトリガーの簡単な例

文法

CREATE TRIGGER <トリガー名> -- トリガーには、最大 64 文字の名前を付ける必要があります。名前の後に区切り文字を続けることもできます。名前は、MySQL の他のオブジェクトとほぼ同じように付けられます。

{ BEFORE | AFTER } -- トリガーには実行時間設定があり、イベント発生前または発生後に設定できます。

{ INSERT | UPDATE | DELETE } -- トリガーするイベントを設定することもできます。挿入、更新、または削除の実行中にトリガーできます。

ON <テーブル名> -- トリガーは特定のテーブルに属します。このテーブルで挿入、更新、または削除操作が実行されると、トリガーがアクティブになります。同じテーブルの同じイベントに 2 つのトリガーを割り当てることはできません。

FOR EACH ROW -- トリガー実行間隔: FOR EACH ROW 句は、トリガーに対して、テーブル全体に対して 1 回ではなく、1 行おきにアクションを実行するように指示します。

<トリガー SQL ステートメント> -- トリガーには、トリガーされる SQL ステートメントが含まれます。ここでのステ​​ートメントは、複合ステートメントを含む任意の有効なステートメントにすることができますが、ここでのステ​​ートメントの制限は関数の場合と同じです。

--トリガー (CREATE TRIGGER) を作成するには相当の権限が必要ですが、すでに root ユーザーである場合はそれで十分です。これは SQL 標準とは異なります。


例1:

テーブル tab1 を作成

tab1が存在する場合はテーブルを削除します。
テーブルを作成 tab1(
  tab1_id varchar(11)
);

テーブル tab2 を作成

tab2が存在する場合はテーブルを削除します。
テーブル tab2 を作成します (
  tab2_id varchar(11)
);

トリガーを作成する: t_afterinsert_on_tab1

機能: tab1テーブルにレコードを追加すると、レコードは自動的にtab2テーブルに追加されます。

t_afterinsert_on_tab1 が存在する場合はトリガーを削除します。
トリガー t_afterinsert_on_tab1 を作成する 
タブ1に挿入後
各行ごとに
始める
   tab2(tab2_id) に値(new.tab1_id) を挿入します。
終わり;

試してみる

tab1(tab1_id) に値('0001') を挿入します。

結果を見る

tab1から*を選択します。
tab2から*を選択します。

例2:

トリガーの作成: t_afterdelete_on_tab1

機能: tab1 テーブルのレコードを削除すると、tab2 テーブルの対応するレコードも自動的に削除されます。

t_afterdelete_on_tab1 が存在する場合はトリガーを削除します。
トリガー t_afterdelete_on_tab1 を作成する
タブ1の削除後
各行ごとに
始める
   tab2_id=old.tab1_id の tab2 から削除します。
終わり;

試してみる

tab1_id='0001' の場合、tab1 から削除します。

結果を見る

tab1から*を選択します。
tab2から*を選択します。

読んでいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQL トリガーの使用シナリオとメソッドの例
  • MySQL トリガーの原理と使用例の分析
  • MySQL トリガー: 複数のトリガー操作の作成例の分析
  • MySQL トリガーの定義と使用方法の簡単な例
  • MySQLトリガーの使用例の詳細
  • MySQLはトリガーを使用してデータベース内のテーブルの行制限を解決します。詳細な説明と例
  • MySQL トリガーを使用してデータを移行および同期するサンプル チュートリアル
  • MySQLトリガーの簡単な概要と例
  • MySQLトリガーの簡単な例と紹介
  • MySQLトリガーの例の詳細な説明

<<:  Nginx を使用して DoNetCore を Alibaba Cloud にデプロイする方法

>>:  Nodejs 配列キューと forEach アプリケーションの詳細な説明

推薦する

DockerにRedisをインストールし、設定ファイルとして起動する詳細な説明

更新: 最近、サーバーがマイニング ウイルスによってハッキングされたことが判明しました。これは、おそ...

fastdfs+nginxクラスタ構築の実装

1. fastdfs の紹介1. fastdfsとは何かFastdfs は軽量のオープンソース分散フ...

nginxプロセスロックの実装の詳細な説明

目次1. nginxプロセスロックの役割2. エントリーレベルのロックの使用3. nginxプロセス...

MySQL の count 関数の正しい使い方の詳細な説明

1. 説明MySQLでは、テーブル内の行の総数を取得する必要がある場合、通常は次の文を使用します。 ...

Vue で webSocket を使用してリアルタイムの天気を更新する方法

目次序文webSocket の操作と例について:ウェブソケット1. webSocketについて2. ...

Apple Watchのインタラクションデザインにおける4つの全く異なる体験が明らかに

今日も Watch アプリのデザインに関する話です。私はケーススタディが大好きなので、同じトピックを...

SQL IDENTITY_INSERT ケーススタディ

一般的に、データ テーブル内の列を ID 列として設定すると、ID 列の表示値を手動で ID 列に挿...

Dockerコンテナ間の通信を実装する方法

シナリオ: laradock 開発環境 (php7.3+mysql5.7) がローカルに構築されてい...

セマンティック HTML タグの紹介

ここ数年、ウェブサイト開発では DIV+CSS が非常に人気があり、当時は大きな騒動を引き起こしまし...

Dockerコンテナとホスト間のデータ相互作用の概要

序文実稼働環境で Docker を使用する場合、多くの場合、データを複数のコンテナ間で永続化または共...

MySQL サーバー 5.7.20 のインストールと設定方法のグラフィック チュートリアル

この記事ではMySQL 5.7.20のインストールと設定方法を記録し、皆さんと共有します1. MyS...

最高の無料英語フォント33選を紹介

チャンクファイブフリータイプファミリーCuprum JAH I フリーフォントイェセヴァブークレフィ...

VMwareを使用したPermeateレンジシステムのインストール手順の詳細説明

1. 背景私たちは時々社内研修を行っており、実験環境をよく利用しています。最初はdockerコンテナ...

Linux プログラムの実行中に動的ライブラリをロードできない場合の解決策

Linux でダイナミック ライブラリをロードできません次のような異常事態が発生した場合./test...

jQueryは広告を上下にスクロールする効果を実現します

この記事では、広告を上下にスクロールする効果を実現するためのjQueryの具体的なコードを参考までに...