web-dev-qa-db-ja.com

psqlでトリガーの内容を表示するにはどうすればよいですか?

\dftでトリガーを一覧表示できることはわかっています。しかし、どうすれば1つの具体的なトリガーを確認できますか?トリガーが実行されるイベント、実行される関数などの詳細を知りたい。

13
Mnementh

OK、私はそれについて自分で見つけました。

コマンド\dftはトリガー自体を表示しません(私が思ったように)、すべてのトリガー関数(戻り型トリガー)を表示します。

\dS <tablename>を作成できるトリガーを確認するには、このテーブルの列だけでなく、このテーブルで定義されているすべてのトリガーも表示します。

トリガー関数(または任意の関数)のソースを表示するには、\df+ <functionname>を使用します。

24
Mnementh

Psqlコマンドにアクセスできない場合でも、次のコマンドを使用できます。

select pg_get_functiondef('functionname'::regproc);
7
jlfenaux

以下を試すことができます:

SELECT event_object_table,trigger_name,event_manipulation,action_statement,action_timing FROM information_schema.triggers ORDER BY event_object_table,event_manipulation

または、次のように「testtable」という名前のテーブルのトリガーを表示できます。

SELECT event_object_table,trigger_name,event_manipulation,action_statement,action_timing FROM information_schema.triggers WHERE event_object_table='testtable' ORDER BY event_object_table,event_manipulation
2
gdarcan