Embedded SQL/C プログラムでホスト変数に値を選択できる PL/pgSQL でトリガー関数を作成する方法を見つけようとしています。私はSQLを初めて使用するので、用語が少しずれていたら申し訳ありません。基本的に、テーブルを変更すると、ホスト変数に格納されている値を更新するために関数がビューをトリガーする必要があります。
これは私が作成し、動作するようにテストしたビューです:
EXEC SQL CREATE VIEW idfound AS SELECT id, num FROM newtable WHERE id = 1;
これは、ホスト変数 dbID と dbNum を使用してビューを呼び出す方法です。
EXEC SQL SELECT * INTO :dbID, :dbNum FROM idfound;
作成したトリガーは次のとおりです。
EXEC SQL CREATE idTrigger AFTER INSERT OR UPDATE ON newtable
FOR EACH ROW EXECUTE PROCEDURE idFunc();
そして、ここに私が使いたいトリガー関数があります:
EXEC SQL CREATE FUNCTION idFunc() RETURNS TRIGGER AS $idTrigger$
BEGIN
SELECT * INTO :dbID, :dbNum FROM idfound;
END;
$idTrigger$ LANGUAGE plpgsql;
テスト目的で、pgAdmin III を使用しています。ホスト変数を使用しないアクション (事前定義された行の値の更新など) を実行するように関数を変更すると、それが作成されていることがわかります。ただし、ホスト変数を使用してトリガーまたはトリガー関数を作成することはできません。
現在、私はこれを一般的に達成する方法を理解しようとしているので、現在のコードが実際にはあまり機能しないことを認識しています。一般的な考え方は、トリガー関数で C のホスト変数を使用する定義済みのビューを呼び出すことです。トリガーを実装するより良い方法があれば、そのアドバイスも大歓迎です。