更新トリガーで構成されたテーブルが何百もあります。より良いアプローチは何でしょうか
。1。トリガーコード(ロジックはすべてのテーブルで同じ)がテーブルに固有であるテーブルごとのトリガー関数を作成します。
2.動的SQLステートメントを作成してすべてのテーブルを処理することを認識しているグローバル関数を作成し、それをすべてのテーブルのトリガー関数として構成します。
グローバル関数は各呼び出しでテーブル名によって動的にsqlステートメントを作成する必要がある一方で、pgsqlはプリコンパイルして関数を再利用できるため、テーブルごとの関数がより高速に動作するかどうか疑問に思いました。
より明確にするために、テーブルごとの関数でTableAに記述できます。
insert into log_table values('TableA', x, y, z)
グローバルなものでは、私はそれを次のように書く必要があります:
EXECUTE 'insert into log_table values(' || current_table || ', x, y, z)'