はじめに
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.最後に、クエリを実行します。
結果は、すべてのトリガーを含むテーブルとして表示されます。