ホームページ >データベース >mysql チュートリアル >mysqlクエリトリガーのステートメントは何ですか?

mysqlクエリトリガーのステートメントは何ですか?

青灯夜游
青灯夜游オリジナル
2022-06-14 15:57:036147ブラウズ

mysql クエリ トリガーには 2 つのステートメントがあります: 1. 「SHOW TRIGGERS [FROM データベース名];」ステートメント。現在のデータベースまたは指定されたデータベース トリガーの基本情報を表示できます。 2. 「SELECT * FROM information_schema.triggers WHERE trigger_name= 'trigger name';」ステートメントは、特定のトリガーの情報を表示し、トリガーの内容とそのメタデータ (関連するテーブル名や定義者など) を取得するために使用されます。

mysqlクエリトリガーのステートメントは何ですか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

トリガーの表示とは、データベースにすでに存在するトリガーの定義、ステータス、および構文情報を表示することを指します。

MySQL でトリガーを表示するには 2 つの方法があります:

  • SHOW TRIGGERS ステートメント

  • information_schema データベースのクエリ トリガー データテーブルなど

#1. SHOW TRIGGERS ステートメントを使用してトリガー情報を表示します

MySQL では、以下を使用できます。 SHOW TRIGGERS ステートメントを使用してトリガーの基本情報を表示します。構文形式は次のとおりです。

SHOW TRIGGERS [FROM 数据库名];

FROM データベース名 : はオプションのステートメントです。すべてのトリガーを表示する場合は省略します。現在のデータベース内; 特定のデータベース内のすべてのトリガーを取得し、省略せずにデータベース名を指定します。

例 1

まず、データ テーブル アカウントを作成します。テーブルには、INT 型の accnum と DECIMAL 型の amount の 2 つのフィールドがあります。 SQL ステートメントと実行結果は次のとおりです。

mysql> CREATE TABLE account(
    -> accnum INT(4),
    -> amount DECIMAL(10,2));
Query OK, 0 rows affected (0.49 sec)

trigupdate という名前のトリガーを作成し、account テーブルがデータを更新するたびに myevent データ テーブルにデータを挿入します。データ テーブル myevent を作成する SQL ステートメントと実行結果は次のとおりです。

mysql> CREATE TABLE myevent(
    -> id INT(11) DEFAULT NULL,
    -> evtname CHAR(20) DEFAULT NULL);
Query OK, 0 rows affected (0.26 sec)

trigupdate トリガーを作成する SQL コードは次のとおりです。

mysql> CREATE TRIGGER trigupdate AFTER UPDATE ON account
    -> FOR EACH ROW INSERT INTO myevent VALUES(1,'after update');
Query OK, 0 rows affected (0.15 sec)

SHOW TRIGGERS ステートメントを使用して、トリガー (SHOW TRIGGERS コマンドの後に \ を追加します) G、この方法で表示される情報はより整理されます)、SQL ステートメントと実行結果は次のとおりです:

mysql> SHOW TRIGGERS \G

mysqlクエリトリガーのステートメントは何ですか?

You実行結果からトリガーの基本情報を確認できます。上記の表示情報の説明は次のとおりです:

  • Trigger はトリガーの名前を表し、トリガーの名前は trigupdate;

  • Event は、トリガーをアクティブにするイベントを表します。ここでのトリガー イベントは、更新操作 UPDATE です。

  • Table は、トリガーをアクティブにする操作オブジェクト テーブルを表します。ここでは、アカウント テーブルを表します。

  • Statement はトリガーによって実行される操作を表します。ここでは、データの一部を myevent データ テーブルに挿入します。

  • Timing は、トリガーが起動された時刻、これは更新操作後 (AFTER);

  • トリガーの作成時刻、SQL モード、トリガー定義など、その他の情報もありますアカウントやキャラクターセットなど、ここでは一つ一つ紹介しません。

SHOW TRIGGERS ステートメントは、現在作成されているすべてのトリガーに関する情報を表示するために使用されます。このステートメントは指定されたトリガーをクエリできないため、トリガーが少ない場合にこのステートメントを使用すると便利です。特定のトリガーに関する情報を表示したい場合、またはデータベース内に多数のトリガーがある場合は、information_schema データベースのトリガー データ テーブルから直接検索できます。

2. トリガー テーブルでトリガー情報を表示する

MySQL では、すべてのトリガー情報は information_schema データベースのトリガー テーブルに存在します。クエリ コマンド SELECT を通じて表示できます。具体的な構文は次のとおりです:

SELECT * FROM information_schema.triggers WHERE trigger_name= '触发器名';

このうち、「トリガー名」は表示するトリガーの名前を指定するために使用され、一重引用符で囲む必要があります。 。このメソッドは、指定されたトリガーをクエリできるため、より便利で柔軟に使用できます。

このメソッドを使用すると、トリガーの内容と、関連付けられたテーブル名やトリガーを作成した MySQL ユーザーの名前である定義者などのメタデータを表示できます。

例 2

以下では、SELECT コマンドを使用して trigupdate トリガーを表示します。SQL ステートメントは次のとおりです:

SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME= 'trigupdate'\G

上記のコマンドは、参照する必要があるトリガーを指定する WHERE トリガーの名前、実行結果は次のとおりです:

mysql> SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME= 'trigupdate'\G

mysqlクエリトリガーのステートメントは何ですか?

トリガーの詳細情報は、以下から確認できます。実行結果。上記に表示される情報の説明は次のとおりです:

  • TRIGGER_SCHEMA はトリガーが存在するデータベースを表し、

  • #TRIGGER_NAME はトリガーの名前を表します。トリガー;

  • EVENT_OBJECT_TABLE はトリガーがどのデータテーブルにあるのかを示します;

  • ACTION_STATEMENT はトリガーがトリガーされたときに実行される特定の操作を示します;

  • ACTION_ORIENTATION の値は ROW で、すべてのレコードでトリガーされることを意味します。

  • ACTION_TIMING はトリガーの瞬間が AFTER であることを意味します。

  • トリガーの作成時刻、SQL モード、トリガーの定義アカウントと文字セットなど、その他の情報もありますが、ここでは 1 つずつ紹介しません。 。

上述 SQL 语句也可以不指定触发器名称,这样将查看所有的触发器,SQL 语句如下:

SELECT * FROM information_schema.triggers \G

这个语句会显示 triggers 数据表中所有的触发器信息。

【相关推荐:mysql视频教程

以上がmysqlクエリトリガーのステートメントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。