Skip to main content
Expand a schema and Procedures, Functions, and Triggers sit beside Tables. Select one, press Return, and its source opens in a read-only tab.
Sidebar tree with Procedures, Functions, and Triggers expanded, and a function's source in a tab beside it

Sections under a PostgreSQL schema, with one overloaded function open

Engine support

A section appears only where the engine has that kind of object. An engine that has them and currently holds none keeps the section and shows No procedures inside it.

Finding a routine or trigger

A trigger row carries the table it fires for beside its name. The sidebar filter matches a trigger by its own name or by that table; type-select matches the name only. Triggers also appear on their table’s Structure tab. Cmd+P indexes all three kinds alongside tables and views. Choosing one opens its source.

Overloaded names

PostgreSQL lets several functions share a name with different argument lists. Where a name repeats inside a section, every row in that group gains its arguments: transform(geometry, integer) and transform(geometry, text). A unique name stays bare. Each row opens its own definition.

Reading the source

Return or a double-click opens the selected row. Right-click offers Show DDL for the same thing, plus Copy Name and Copy with Signature. Beside the source sit the properties the engine reports: language, return type, volatility, security, and owner for a routine; timing, events, orientation, and enabled state for a trigger. The labels are the engine’s own, so they differ between engines. A viewer tab survives a relaunch and refetches when it reopens.
A DuckDB macro shows the expression DuckDB stored, not the CREATE MACRO text as typed.

When the source is missing