4
以下のコード例で問題をシミュレートしようとしました。以下のコードでは、手順でselect * from test
を実行しています。わかっているように、これにはperform
というキーワードを使用する必要があります。これはうまく動作します:PERFORM CTEクエリのPostgres plpgsql
perform * from test;
ただし、単純なクエリをCTEとして書き直そうとすると、動作しません。私は構文エラーが発生しています。
with test_as_cte as(select * from test) perform * from test_as_cte;
これは可能ですか?正しい構文は何ですか?私はいくつかの選択肢を試して、ドキュメントを通過しましたが、これまでのところ成功していません。
(。。私は、クエリが実際にどんな意味がありません知っている、これは私の問題を説明するためだけの例であることに注意してください)
create table test
(
key int primary key
);
create function test() returns trigger as
$$
begin
raise notice 'hello there';
-- this does work
perform * from test;
-- this doesn't work
with test_as_cte as(select * from test) perform * from test_as_cte;
return new;
end;
$$
language plpgsql;
create trigger test after insert on test for each row execute procedure test();
insert into test(key) select 1;
ありがとうございます。それは確かに機能します。問題は、私はあまりにも多くを抽象化したことです。私は新しい質問をします。 –
私は明らかに90分待たなければなりません:)。私は今日後でそれを追加します。再度、感謝します。 –
ここをクリックしてください:https://stackoverflow.com/questions/44908442/postgres-plpgsql-with-perform-data-modifying-cte-queries –