sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLデータベース内のすべてのトリガーを一覧表示する2つの方法

    PostgreSQLデータベースのトリガーを一覧表示するための2つのオプションがあります。

    information_schema.triggers 表示

    このビューには、現在のユーザーが所有しているか、SELECT以外の特権を持っている現在のデータベース内のすべての関数とプロシージャが含まれています。 の上。

    トリガーのリストを返す例を次に示します。

    SELECT
        trigger_schema,
        trigger_name,
        event_object_table
    FROM 
        information_schema.triggers
    ORDER BY 
        event_object_table;

    結果の例:

    +----------------+-----------------------+--------------------+
    | trigger_schema |     trigger_name      | event_object_table |
    +----------------+-----------------------+--------------------+
    | public         | last_updated          | actor              |
    | public         | last_updated          | address            |
    | public         | last_updated          | category           |
    | public         | last_updated          | city               |
    | public         | last_updated          | country            |
    | public         | last_updated          | customer           |
    | public         | film_fulltext_trigger | film               |
    | public         | film_fulltext_trigger | film               |
    | public         | last_updated          | film               |
    | public         | last_updated          | film_actor         |
    | public         | last_updated          | film_category      |
    | public         | last_updated          | inventory          |
    | public         | last_updated          | language           |
    | public         | last_updated          | rental             |
    | public         | last_updated          | staff              |
    | public         | last_updated          | store              |
    +----------------+-----------------------+--------------------+

    必要に応じて、列を追加してください。たとえば、action_statementを含めることができます トリガーの定義を含める列。

    pg_trigger カタログ

    pg_catalog.pg_trigger カタログは、テーブルとビューにトリガーを格納します。

    トリガーとそのテーブルのリストを返すコードの例を次に示します。

    SELECT 
        tgname AS trigger_name,
        tgrelid::regclass AS table_name
    FROM 
        pg_trigger
    ORDER BY 
        table_name,
        trigger_name;

    データベースによっては、かなり多くのトリガーを返す可能性があります。

    次のように、特定のテーブルのトリガーのみに絞り込むことができます。

    SELECT 
        tgname AS trigger_name
    FROM 
        pg_trigger
    WHERE
        tgrelid = 'public.film'::regclass
    ORDER BY
        trigger_name;

    結果の例:

    +------------------------------+
    |         trigger_name         |
    +------------------------------+
    | RI_ConstraintTrigger_a_24890 |
    | RI_ConstraintTrigger_a_24891 |
    | RI_ConstraintTrigger_a_24900 |
    | RI_ConstraintTrigger_a_24901 |
    | RI_ConstraintTrigger_a_24915 |
    | RI_ConstraintTrigger_a_24916 |
    | RI_ConstraintTrigger_c_24907 |
    | RI_ConstraintTrigger_c_24908 |
    | RI_ConstraintTrigger_c_24912 |
    | RI_ConstraintTrigger_c_24913 |
    | film_fulltext_trigger        |
    | last_updated                 |
    +------------------------------+

    1. SQLSELECTで特定の値を持つレコードを除外する方法

    2. MySQLデータベースをSQLiteデータベースにエクスポートする

    3. CREATEOracleプロシージャ

    4. 緯度と経度のデータ型はどれですか?