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 アプリケーションの詳細な説明

推薦する

Prometheus+Grafanaによるnginxの監視方法を分析する

目次1. ダウンロード2. nginxとnginx-vts-exporterをインストールする3. ...

MySQLの読み書き分離により挿入後にデータが選択されなくなる問題を解決

MySQLは独立した書き込み分離を設定します。コードに次のものを書くと問題が発生する可能性があります...

vue+element を使用した Google プラグインの開発プロセス全体

シンプルな機能: ブラウザの右上隅にあるプラグイン アイコンをクリックすると小さなポップアップ ウィ...

Webpack での publicPath の使用法の詳細な説明

目次出力出力パス出力.publicPath webpack-dev-server の publicP...

フォーム要素属性の読み取り専用と無効の使用の比較

1) 適用範囲:読み取り専用:input[type="text"],input[...

MySQL 結合クエリ構文と例

接続クエリ:これは、2 つのクエリ (またはテーブル) の各行をペアで接続した結果です。つまり、1 ...

MySQL 5.7 のルートパスワードログイン問題の解決策

前回の記事でMySQLサービスが起動しない問題が解決したと分かった後、パスワードなしでrootユーザ...

Douyin ロゴを作成する手順の CSS3 分析

「Tik Tok」も大人気で、ユーザー数は7億人と言われています。今日は、注目を集めるためにTikT...

HTMLデザインパターンの日々の勉強ノート

HTML デザインパターン学習ノート今週は主にHTMLデザインパターンを学びました。学習内容をまとめ...

MySQLクエリ最適化に必須の知識ポイントのまとめ

序文クエリの最適化は一夜にして達成できるものではありません。対応するツールの使い方を学び、他の人の経...

同じ IP のアクセス頻度を制限するように nginx を設定する方法

1. nginx.conf の http{} に次のコードを追加します。 limit_conn_zo...

HTML onfocus gain focus および onblur lose focus イベントの詳細な説明

HTML onfocus イベント属性定義と使用法onfocus 属性は、要素がフォーカスを受け取っ...

nuxt.js 複数の環境変数の設定

目次1. はじめに2. シナリオ3. 環境を整える3.1 環境変数の挿入4. 最後に1. はじめに一...

InnoDBのインデックスページ構造、挿入バッファ、適応ハッシュインデックスについての簡単な説明

InnoDB インデックスの物理構造すべての InnoDB インデックスは Btree インデックス...

Debian ベースの Linux システム ソフトウェア インストール コマンドの詳細な説明 (推奨)

Debian の紹介Debian は、広い意味では、フリーなオペレーティング システムの作成に専念...