SELECT substring(pg_get_triggerdef(tg.oid, TRUE) FROM position('WHEN' in pg_get_triggerdef(tg.oid, TRUE))) AS when_cond FROM pg_trigger tg WHERE tg.tgname = 'your_trigger_name';
--
Melvin Davidson I reserve the right to fantasize. Whether or not you wish to share my fantasy is entirely up to you.
This doesn’t answer OP question.
Besides this query gets you not only “WHEN” clause but also whatever follows it, for instance “EXECUTE PROCEDURE…”
As for “pg_get_expr(pg_node_tree, relation_oid)” – looks like it doesn’t work with pg_trigger, because as a second parameter (Var) it expects relation_oid, and relation could have multiple triggers, so pg_get_expr() wouldn’t know which trigger’s tgqual you want to decompile.
Regards,
Igor Neyman
Actually, it DOES answer the "OP" question. The "Besides" is irrelevant, as with additional length() & position() sub functions, just the WHEN clause can be abstracted. I'm just not going to waste my time doing all the work
when I provided a viable solution that does not error out.
--
Melvin Davidson I reserve the right to fantasize. Whether or not you wish to share my fantasy is entirely up to you.