MySQLデータベースのすべてのトリガーをどのようにリストしますか?


100

MySQLデータベースのすべてのトリガーを一覧表示するコマンドは何ですか?

回答:


149

すべてのトリガーをリストするコマンドは次のとおりです。

show triggers;

または、次の方法でINFORMATION_SCHEMA直接テーブルにアクセスできます。

select trigger_schema, trigger_name, action_statement
from information_schema.triggers

2
information_schemaに直接アクセスする代わりに、 "SHOW TRIGGERS"クエリを使用することをお勧めします。 "SHOW TRIGGERS"が優れたパフォーマンスを維持している場合、サーバーにデータベースが1,000を超えると後者は非常に遅くなります。
Martin Tajur、

fpr 2番目の「複雑な」バージョンに感謝します。最初の1つは、ホストの1つでは機能しません(領域を知らない)...
userlond

3
SHOW TRIGGERSは、TRIGGERそのデータベースとテーブルに対する権限が必要です。非特権ユーザーでMySQLにログインした場合、実行してSHOW TRIGGERSもエラーがスローされる代わりに何も返されません。特権の要件を知らない場合は、混乱する可能性があります。
クリストファーシュルツ

14

次のコードがあなたにもっと情報を与えることを願っています。

select * from information_schema.triggers where 
information_schema.triggers.trigger_schema like '%your_db_name%'

これにより、MySQLバージョンで合計22カラムが提供されます:5.5.27以上

TRIGGER_CATALOG 
TRIGGER_SCHEMA
TRIGGER_NAME
EVENT_MANIPULATION
EVENT_OBJECT_CATALOG
EVENT_OBJECT_SCHEMA 
EVENT_OBJECT_TABLE
ACTION_ORDER
ACTION_CONDITION
ACTION_STATEMENT
ACTION_ORIENTATION
ACTION_TIMING
ACTION_REFERENCE_OLD_TABLE
ACTION_REFERENCE_NEW_TABLE
ACTION_REFERENCE_OLD_ROW
ACTION_REFERENCE_NEW_ROW
CREATED 
SQL_MODE
DEFINER 
CHARACTER_SET_CLIENT
COLLATION_CONNECTION
DATABASE_COLLATION

1
LIKEスキーマを扱う場合は使用を避けます。私は、クライアントが "company"という名前のデータベースと "company_project"という名前のデータベースを持っている場合、エラーが発生しやすい環境で作業してきました。また、わかりやすくするためにKEYWORDSと大文字のINFORMATION_SCHEMAとそこにある列を大文字にすることをお勧めします。これにより、通常のDBを扱っていないことが明確になります。
AndrewWhalan

13

以下を使用して、特定のトリガー定義を見つけることができます。

SHOW TRIGGERS LIKE '%trigger_name%'\G

または、データベース内のすべてのトリガーを表示するには、以下のようにします。MySQL 5.0以降で動作します。

SHOW TRIGGERS\G

9

特定のスキーマの特定のトリガーを表示するには、次の方法を試すことができます。

select * from information_schema.triggers where 
information_schema.triggers.trigger_name like '%trigger_name%' and 
information_schema.triggers.trigger_schema like '%data_base_name%'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.