MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

【MySQL】トリガーのメタデータを取得する方法をわかりやすく解説

MySQLでトリガー(トリガ定義)のメタデータを確認したい場合は、INFORMATION_SCHEMAデータベースTRIGGERSテーブルを参照します。このテーブルには、データベース内に存在するすべてのトリガーに関する詳細情報が格納されています。

例として、次のSELECT文を実行すると、各トリガーが属するスキーマ名・トリガー名・実際に実行される処理内容(ACTION_STATEMENT)を一覧で取得できます。

mysql> SELECT TRIGGER_SCHEMA, TRIGGER_NAME, ACTION_STATEMENT
    -> FROM INFORMATION_SCHEMA.TRIGGERS\G
*************************** 1. row ***************************
  TRIGGER_SCHEMA: query
   TRIGGER_NAME: trigger_before_delete_sample
ACTION_STATEMENT: BEGIN
SET @count = if (@count IS NULL, 1, (@count+1));
INSERT INTO sample_rowaffected values (@count);
END
*************************** 2. row ***************************
  TRIGGER_SCHEMA: query
   TRIGGER_NAME: before_inser_studentage
ACTION_STATEMENT: IF NEW.age < 0 THEN SET NEW.age = 0;
END IF
*************************** 3. row ***************************
  TRIGGER_SCHEMA: sys
   TRIGGER_NAME: sys_config_insert_set_user
ACTION_STATEMENT: BEGIN IF @sys.ignore_sys_config_triggers != true AND
NEW.set_by IS NULL THEN SET NEW.set_by = USER(); END IF; END
*************************** 4. row ***************************
  TRIGGER_SCHEMA: sys
   TRIGGER_NAME: sys_config_update_set_user
ACTION_STATEMENT: BEGIN IF @sys.ignore_sys_config_triggers != true AND
NEW.set_by IS NULL THEN SET NEW.set_by = USER(); END IF; END
4 rows in set (0.03 sec)

TRIGGERSテーブルの主なカラム

INFORMATION_SCHEMA.TRIGGERSには、上記以外にも多くの情報が含まれています。よく使われる主なカラムは以下のとおりです。

  • TRIGGER_SCHEMA … トリガーが登録されているデータベース(スキーマ)名
  • TRIGGER_NAME … トリガーの名前
  • EVENT_MANIPULATION … トリガーの発火イベント(INSERT/UPDATE/DELETE)
  • ACTION_TIMING … 発火タイミング(BEFORE/AFTER)
  • EVENT_OBJECT_TABLE … トリガーが紐づいているテーブル名
  • ACTION_STATEMENT … トリガー本体として実行されるステートメント
  • DEFINER … トリガーを作成したユーザーアカウント

特定のスキーマやトリガーに絞り込んで取得する

すべてのトリガーではなく、特定のデータベースだけを調べたい場合は、WHERE句で条件を指定します。たとえばqueryデータベースに登録されたトリガーだけを確認するには、次のように記述します。

mysql> SELECT *
    -> FROM INFORMATION_SCHEMA.TRIGGERS
    -> WHERE TRIGGER_SCHEMA = 'query'\G

また、個別のトリガー名がわかっている場合は、WHERE TRIGGER_NAME = 'トリガー名'のように指定すれば、そのトリガーの完全な定義を一度に確認できます。

補足:SHOW TRIGGERSステートメントとの違い

同じ目的で使える簡易的なコマンドとして、SHOW TRIGGERS;というステートメントもあります。こちらは現在選択中のデータベースのトリガー一覧を手軽に表示できる便利な方法です。一方、INFORMATION_SCHEMAを利用する方法は、通常のSELECT文として扱えるため、WHERE句による絞り込みや他のツール・アプリケーションからのプログラマティックな参照に向いています。用途に応じて使い分けるとよいでしょう。

  1. Windows 10でヘルプを表示・活用する方法まとめ!困ったときの対処法8選

    Windows 10で何らかの問題が発生したとき、F1キーまたはFn + F1キーを押すと、「Windows 10でヘルプを表示する方法」に関するポップアップウィンドウが開き、Microsoftのサポートを受けられると言われています。本記事では、Windows 10の主な機能や頻繁に発生するエラーと、それぞれに対する的確かつ効果的な解決策を詳しく解説します。Windows 10の総合ガイドとしてぜひご活用ください。Windows 10でヘルプを表示するには?予期せず、Windows 10へのログイン問題やアプリケーションが動作しないエラーに遭遇することがあります。ユーザーの報告によると、PCの

  2. 【サンプルコード付き】Androidで現在の画面の向き(縦・横)を取得する方法

    はじめに:画面の向きを取得するシーンとは Androidアプリ開発では、アクティビティが現在縦向き(ポートレート)なのか横向き(ランドスケープ)なのかを、プログラム側から判定したい場面があります。例えば、端末の向きに応じてレイアウトやUIを切り替えたいときなどです。本記事では、getResources().getConfiguration().orientationを使って現在の画面の向きを取得し、その結果に応じてTextViewの表示を切り替えるサンプルを、手順に沿ってわかりやすく解説します。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、メニューからFile