0

私はPostgres(9.0.5)を初めて使用し、一般的に関数/トリガーをほとんど作成していません。widgetsウィジェットが挿入、更新、または削除されるたびに、レコード全体が引数としてストアド プロシージャに渡されるように、テーブルにトリガーを設定したいと考えています。その後、プロシージャーは、さまざまな変更についてレコードを検査し、実行するアクションを決定できます。コースから外れていることはわかっていますが、これまでの私の最善の試みは次のとおりです。

CREATE OR REPLACE TRIGGER tg_widgets
ON TABLE widgets
AFTER EVERY INSERT, UPDATED, DELETE
DO run_widget_handler

CREATE OR REPLACE PROCEDURE run_widget_handler AS
    # Definitition here
    # If the widget's name was changed, do X
    # Else if the widget's wow_factor was changed, do Y
    # Else, do Z

の定義を実装する方法については心配していませんrun_widget_handler。ヘルプを探してトリガーを作成し、widgetを proc に渡すだけです。前もって感謝します。

4

1 に答える 1

0

行をトリガー関数に「渡す」必要はありません(ところで、PostgreSQLには「手順」はなく、関数のみがあります)。

関数が「returns trigger」として宣言されている場合、「new」または「old」として完全な行に自動的にアクセスできます。

マニュアルの詳細: http://www.postgresql.org/docs/current/static/plpgsql-trigger.html

于 2012-12-04T17:59:39.853 に答える