Как я могу показать содержимое триггера с помощью psql?


12

Я знаю, что могу перечислить триггеры с \dft. Но как я могу увидеть один конкретный триггер? Я хочу узнать подробности, например, по каким событиям выполняется триггер, какая функция выполняется и так далее.

Ответы:


23

Хорошо, я узнал об этом сам.

Команда \dftне показывает триггеры сама (как я думал), она показывает все триггерные функции (триггер возвращаемого типа).

Чтобы увидеть триггер, который вы можете сделать \dS <tablename>, он показывает не только столбцы этой таблицы, но и все триггеры, определенные в этой таблице.

Чтобы показать источник триггер-функции (или любой функции) используйте \df+ <functionname>.


1
Используйте \ ef <имя_функции> для более удобного чтения.
Мозг90

7

Если у вас нет доступа к командам psql, вы все равно можете использовать:

select pg_get_functiondef('functionname'::regproc);

2

Вы можете попробовать следующее:

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.