Stream triggers manipulation interfaces
=======================================

ストリームトリガーは、 ``REPLICA IDENTITY FULL``
があるテーブル、または\ ``TOAST``
が適用される列のないテーブルにのみ作成できます。

bdr.create_conflict_trigger
---------------------------

このファンクションは、新しい競合トリガーを作成します。

概要
^^^^

.. code:: sql

   bdr.create_conflict_trigger(trigger_name text,
                               events text[],
                               relation regclass,
                               function regprocedure,
                               args text[] DEFAULT {})

パラメーター
^^^^^^^^^^^^

-  ``trigger_name`` —新しいトリガーの名前。

-  ``events``
   —このトリガーを起動するイベントの配列。有効な値は’\ ``INSERT``
   ‘、’\ ``UPDATE`` ‘、および’\ ``DELETE`` ’です。

-  ``relation`` —このトリガーを発射する関係。

-  ``function`` —実行するファンクション。

-  ``args``
   —オプショナル。トリガーファンクションが実行時に受け取るパラメーターの配列
   ``TG_ARGV`` 変数の内容を指定します。

注
^^

このファンクションは、 ``DDL``
ステートメントと同じレプリケーションメカニズムを使用します。これは、レプリケーションが :ref:`ddl filters <Replication sets>` 構成の影響を受けることを意味します。

ファンクションは、トリガーが作成されているリレーションでグローバルDMLロックを取得します。

このファンクションはトランザクションです。トランザクションの\ ``ROLLBACK``
を使用してエフェクトをロールバックできます。変更は現在のトランザクションに表示されます。

通常のPostgreSQLトリガーと同様に、\ ``bdr.create_conflict_trigger``
ファンクションには、\ ``relation`` の\ ``TRIGGER``
特権とファンクションの\ ``EXECUTE``
特権が必要です。これは、\ ``bdr.backwards_compatibility``
が30619以上の場合に適用されます。
PGDでは、追加のセキュリティルールが競合トリガーを含むすべてのトリガーに適用されます。
 :ref:`Security and roles <Security and roles>` を参照してください。

bdr.create_transform_trigger
----------------------------

このファンクションは、変換トリガーを作成します。

.. _概要-1:

概要
^^^^

.. code:: sql

   bdr.create_transform_trigger(trigger_name text,
                                events text[],
                                relation regclass,
                                function regprocedure,
                                args text[] DEFAULT {})

.. _パラメーター-1:

パラメーター
^^^^^^^^^^^^

-  ``trigger_name`` —新しいトリガーの名前。

-  ``events``
   —このトリガーを起動するイベントの配列。有効な値は’\ ``INSERT``
   ‘、’\ ``UPDATE`` ‘、および’\ ``DELETE`` ’です。

-  ``relation`` —このトリガーを発射する関係。

-  ``function`` —実行するファンクション。

-  ``args``
   —オプショナル。トリガーファンクションが実行時に受け取るパラメーターの配列
   ``TG_ARGV`` 変数の内容を指定します。

.. _注-1:

注
^^

このファンクションは、 ``DDL``
ステートメントと同じレプリケーションメカニズムを使用します。これは、レプリケーションが :ref:`ddl filters <Replication sets>` 構成の影響を受けることを意味します。

ファンクションは、トリガーが作成されているリレーションでグローバルDMLロックを取得します。

このファンクションはトランザクションです。トランザクションの\ ``ROLLBACK``
を使用してエフェクトをロールバックできます。変更は現在のトランザクションに表示されます。

通常のPostgreSQLトリガーと同様に、\ ``bdr.create_transform_trigger``
ファンクションには、\ ``relation`` の\ ``TRIGGER``
特権とファンクションの\ ``EXECUTE`` 特権が必要です。
PGDでは、追加のセキュリティルールが変換トリガーを含むすべてのトリガーに適用されます。
 :ref:`Security and roles <Security and roles>` を参照してください。

bdr.drop_trigger
----------------

このファンクションは、既存のストリームトリガー競合と変換の両方を削除します。

.. _概要-2:

概要
^^^^

.. code:: sql

   bdr.drop_trigger(trigger_name text,
                    relation regclass,
                    ifexists boolean DEFAULT false)

.. _パラメーター-2:

パラメーター
^^^^^^^^^^^^

-  ``trigger_name`` —既存のトリガーの名前。

-  ``relation`` —トリガーが定義されている関係。

-  ``ifexists`` — ``true``
   に設定されている場合、このファンクションは不足しているトリガーを無視します。

.. _注-2:

注
^^

このファンクションは、 ``DDL``
ステートメントと同じレプリケーションメカニズムを使用します。これは、レプリケーションが :ref:`ddl filters <Replication sets>` 構成の影響を受けることを意味します。

ファンクションは、トリガーが作成されているリレーションでグローバルDMLロックを取得します。

このファンクションはトランザクションです。トランザクションの\ ``ROLLBACK``
を使用してエフェクトをロールバックできます。変更は現在のトランザクションに表示されます。

``relation`` の所有者のみが\ ``bdr.drop_trigger``
ファンクションを実行できます。
