はじめに
MySQLのSHOW TRIGGERS
ステートメントは、データベーステーブルに定義されているすべてのトリガーを表示します。このコマンドは、名前、イベントタイミング、その他の詳細など、既存のトリガーの詳細を提供するのに役立ちます。
ステートメントは単純でオプションなしで機能しますが、オプションを追加すると、データ列がさらに絞り込まれ、フィルタリングされます。その結果、このコマンドは必要な情報をすばやく取得するのに役立ち、データベース内のトリガーステートメントの概要をより正確に提供します。
このチュートリアルでは、SHOW TRIGGERS
について説明します。 例を使用してMySQLのステートメントを詳細に説明します。
前提条件
- ターミナルまたはMySQLWorkbenchを介したMySQLサーバーへのアクセス。
- sudo特権。
- MySQLまたはTRIGGERユーザー権限を持つアカウントへのrootアクセス。
- トリガーを含むデータベーステーブル。
構文
SHOW TRIGGERS
の構文 ステートメントは次のとおりです:
SHOW TRIGGERS
[{FROM | IN} <database name>]
[ WHERE <expression> LIKE '<pattern>']
ステートメントがどのように機能するかを理解するために、各部分の機能は次のとおりです。
SHOW TRIGGERS
現在のデフォルトデータベースの追加オプションなしで動作します。-
FROM <database name>
またはIN <database name>
検索するデータベース名を提供します。FROM
を追加します またはIN
特定のデータベースからのトリガーを表示するためのデータベース名を句とステートメントで指定します。 -
WHERE <expression>
提供された式に基づいて、結果から行を選択します。 -
LIKE '<pattern>'
WHERE
をフィルタリングします 式とパターンに一致する値のみを表示します。
MySQLの表示トリガー:ステートメントはどのように機能しますか?
SHOW TRIGGERS
ステートメントは、作業データベースで定義されているすべてのトリガーを示しています。特定のオプションを追加すると、データベースを選択せずにデータベースからのトリガー情報を表示できます。さらに、追加のオプションを使用すると、出力をフィルタリングして絞り込み検索を行うことができます。
開始する前に、ターミナルを開きます( CTRL + ALT + T )そしてデータベースサーバーに接続します:
sudo mysql -u <username> -p
プロンプトがmysql>
に変わります 、MySQLモニターへの接続が成功したことを示します。
トリガーのリスト
SHOW TRIGGERS
を使用してトリガーを一覧表示する方法は2つあります。 ステートメント:
1.データベースに接続せずにトリガーを一覧表示するには、 FROM
を追加します またはIN
句を指定し、データベース名を指定します。
例:
SHOW TRIGGERS IN <database name>\G
SHOW TRIGGERS FROM <database name>\G
2.または、最初にデータベースに接続します:
USE <database name>;
次に、パラメータなしでコマンドを実行します。
SHOW TRIGGERS\G
どちらの場合も、出力には、定義されたすべてのトリガーを含むテーブルが表示されます。
結果セットのSHOWTRIGGERS列
SHOW TRIGGERS
からの結果の出力 ステートメントは、特定のトリガーに関する詳細を含む各行を表示します。
すべての列には次の属性が含まれています:
- トリガー はトリガー名です。
- イベント トリガーがアクティブになったときのアクションを示します。
- 表 トリガーが存在するテーブルの名前です。
- ステートメント トリガーの機能を示します。具体的には、トリガーがアクティブ化されたときに実行される完全なSQLステートメントがこのフィールドに出力されます。
- タイミング イベントに関連してトリガーが実行されるタイミングを示します。
- 作成済み ユーザーがトリガーを行った日時を出力します。
- sql_mode トリガーの実行時に有効なSQLサーバーモードを一覧表示します。
- 定義者 トリガーと接続を作成したユーザーを
[email protected]
として指定します 。 - character_set_client クライアントからのステートメントの文字セットを示しています。
- collation_connection 定義者がトリガーを作成したときに文字列を比較およびソートするための文字セットルールを定義します。
- データベース照合 は、トリガーに関連付けられた文字列を並べ替えて比較するときのデータベースの文字セットを示しています。
MySQL SHOWトリガー:例
WHERE
を使用する またはLIKE
SHOW TRIGGER
から列を選択するステートメント AND
を出力して使用します 、OR
およびNOT
検索をさらにフィルタリングする演算子。以下の例は、典型的な使用例を示しています。
トリガーを表で表示
テーブル名でトリガーを一覧表示するには、次の2つの方法のいずれかを使用します。
1.テーブルからのトリガーをなしで表示します 次の方法でデータベースに接続する:
SHOW TRIGGERS
FROM <database name>
WHERE `Table`='<table name>'\G
たとえば、データベース名が people
の場合 テーブル名はperson
、使用:
SHOW TRIGGERS
FROM people
WHERE `Table`='person'\G
2.または、最初にデータベースに接続します。
USE <database name>;
次に、 SHOW TRIGGERS
を使用します WHERE
のみ 条項:
SHOW TRIGGERS
WHERE `Table`='<table name>'\G
たとえば、データベースの場合people
テーブル付きperson
、実行:
USE people;
SHOW TRIGGERS
WHERE `Table`='person'\G
どちらの場合も、出力には特定のテーブルのすべてのトリガーが行ごとに一覧表示されます。
イベントごとにトリガーを表示
すべてのトリガーは、特定のMySQLイベントステートメントでアクティブになります。イベントごとにトリガーを一覧表示するには、次の構文を使用します。
SHOW TRIGGERS
FROM <database name>
WHERE `Event`='<event>'\G
または、最初にデータベースに接続します:
USE <database name>;
SHOW TRIGGERS
WHERE `Event`='<event>'\G
<event>
で可能なオプション は:
-
INSERT
-ユーザーがデータをテーブルに挿入したときにトリガーをアクティブにします。 -
UPDATE
-ユーザーがテーブルデータを更新したときにトリガーを実行します。 -
DELETE
-ユーザーがテーブルからデータを削除したときにトリガーを実行します。
例:
SHOW TRIGGERS
FROM people
WHERE `Event`='DELETE'\G
出力には、イベントが DELETE
であるトリガーのみが表示されます 。
タイミングごとにトリガーを表示
タイミング パラメータはイベントにリンクしています 、トリガーが BEFORE
をアクティブにするかどうかを示します またはAFTER
イベントステートメント。データベースに接続せずにタイミングに基づいてトリガーを表示するには、次の構文を使用します。
SHOW TRIGGERS
FROM <database name>
WHERE `Timing`='<timing>'\G
最初にデータベースに接続してから、タイミングごとにトリガーを一覧表示するには、次を使用します。
USE <database name>;
SHOW TRIGGERS
WHERE `Timing`='<timing>'\G
パラメータの例では、ステートメントは次のようになります。
SHOW TRIGGERS
FROM people
WHERE Timing='AFTER'\G
SHOW TRIGGERS
ステートメント出力には、タイミングのトリガーが表示されます AFTER
に設定 。
ステートメントごとにトリガーを表示
ステートメント 列には、トリガーが呼び出されたときに実行されるSQLステートメントが含まれています。
コマンドをLIKE
と組み合わせます トリガーステートメントを検索する句:
SHOW TRIGGERS
FROM <database name>
WHERE `Statement` LIKE '<pattern>'\G
または、最初にデータベースを選択して、 FROM
を削除します ステートメントの一部:
USE <database name>;
SHOW TRIGGERS
WHERE `Statement` LIKE '<pattern>'\G
LIKE
ステートメントは、ワイルドカード(%)文字を使用してパターンマッチング検索を実行します:
-
%
を使用する 最後に、特定の単語で始まるステートメントに一致します。たとえば、'IF%'
IF
で始まるすべてのオカレンスに一致します ステートメント。 -
%
を追加します 最初に、指定された単語で終わるステートメントと一致します。例:'%IF'
IF
で終わるすべてのステートメントに一致します ステートメント。 -
%
と書く ステートメントの両側で、ステートメント内の任意の場所にある単語を検索します。
トリガーの検索例ステートメント AVG
を含むテーブル内 MySQL関数は次のとおりです:
SHOW TRIGGERS
FROM people
WHERE `Statement` LIKE '%AVG%'\G
クエリは、 AVG
を含むすべてのステートメントを取得します 機能。
検索パラメータの組み合わせ
検索パラメータをAND
と組み合わせる 複雑なクエリを作成する演算子。たとえば、MySQL AVG
を含むトリガーを検索するには 機能し、 DELETE
があります イベント、実行:
SHOW TRIGGERS
FROM people
WHERE `Statement` LIKE '%AVG%' AND `Event`='DELETE'\G
結果は、両方のステートメントが Trueと評価されるトリガーを示しています 。追加のクエリ構築については、 NOT
を使用してください およびOR
演算子。
MySQLWorkbenchでトリガーを表示する
すべてのSHOW TRIGGERS
前の例のステートメントは、MySQLWorkbenchで機能します。唯一の違いは、コマンドがセミコロン( ;
)で終わることです。 ) \G
の代わりに MySQLWorkbenchで。
MySQL Workbenchでトリガーを表示するには、次のようにします。
1.ターミナルからMySQLWorkbenchを実行します( CTRL + ALT + T )次のコマンドを使用します:
mysql-workbench
または、GUIを使用してアプリケーションリストでMySQLWorkbenchを検索します。
2.データベースサーバーに接続する接続を選択します。
3.プロンプトが表示されたら、ユーザーパスワードを入力します。
4. SHOW TRIGGERS
を追加します クエリボックスへのステートメント:
SHOW TRIGGERS;
5.最後に、クエリを実行します。
結果は、すべてのトリガーを含むテーブルとして表示されます。