【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句による絞り込みや他のツール・アプリケーションからのプログラマティックな参照に向いています。用途に応じて使い分けるとよいでしょう。
-
Windows 10でヘルプを表示・活用する方法まとめ!困ったときの対処法8選
Windows 10で何らかの問題が発生したとき、F1キーまたはFn + F1キーを押すと、「Windows 10でヘルプを表示する方法」に関するポップアップウィンドウが開き、Microsoftのサポートを受けられると言われています。本記事では、Windows 10の主な機能や頻繁に発生するエラーと、それぞれに対する的確かつ効果的な解決策を詳しく解説します。Windows 10の総合ガイドとしてぜひご活用ください。Windows 10でヘルプを表示するには?予期せず、Windows 10へのログイン問題やアプリケーションが動作しないエラーに遭遇することがあります。ユーザーの報告によると、PCの
-
【サンプルコード付き】Androidで現在の画面の向き(縦・横)を取得する方法
はじめに:画面の向きを取得するシーンとは Androidアプリ開発では、アクティビティが現在縦向き(ポートレート)なのか横向き(ランドスケープ)なのかを、プログラム側から判定したい場面があります。例えば、端末の向きに応じてレイアウトやUIを切り替えたいときなどです。本記事では、getResources().getConfiguration().orientationを使って現在の画面の向きを取得し、その結果に応じてTextViewの表示を切り替えるサンプルを、手順に沿ってわかりやすく解説します。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、メニューからFile