postgreSql 9.1に、いくつかのテーブルの挿入時に起動したいトリガーがあります。これらすべてのテーブルのトリガーを作成する代わりに、これらすべてのテーブルに影響を与えることは可能ですか?トリガー関数を呼び出しているのと同じ挿入トリガーを使用したい58のテーブルがあるので、
create trigger tuweke
after insert on product
for each row execute procedure tuwekeAdjustextract();
create trigger tuweke
after insert on caneweightment
for each row execute procedure tuwekeAdjustextract();
...
これらすべてのテーブルに対してこれを行うと、複数のスキーマが存在するため、ワークロードが多くなり、これを1つのクエリで実行できますか次に、そのスキーマのすべてのテーブルまたはデータベース全体に影響を与えますか?
そのようなオプションはありません。トリガーはテーブルに属し、それはそれです。ただし、すべてのトリガーが同じ手順を使用している場合は、すべてのCREATE TRIGGER
ステートメントを使用して、Niceテキスト出力を簡単に生成できます。必要なのは、目的のテーブル名を収集してから、必要な部分を先頭に追加して追加することだけです。
次のようなクエリを使用して、特定のスキーマからすべてのテーブル名を取得できます。
SELECT p.tablename
FROM pg_tables p
WHERE p.schemaname = 'public'
;
ここで選択した場合
'CREATE TRIGGER tuweke
AFTER INSERT ON ' || p.tablename || '
FOR EACH ROW EXECUTE PROCEDURE tuwekeAdjustextract();
'
p.tablename
の代わりに準備が整いました。出力をコピーして実行します。