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``
ファンクションを実行できます。
