select open change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

SQL COMMANDS / FUNCTIONS & PROCEDURES

change the definition of a routine

Syntax

ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
action [ ... ] [ RESTRICT ]
ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
RENAME TO new_name
ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
SET SCHEMA new_schema
ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
[ NO ] DEPENDS ON EXTENSION extension_name
where action is one of:

IMMUTABLE | STABLE | VOLATILE
[ NOT ] LEAKPROOF
[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
PARALLEL { UNSAFE | RESTRICTED | SAFE }
COST execution_cost
ROWS result_rows
SET configuration_parameter { TO | = } { value | DEFAULT }
SET configuration_parameter FROM CURRENT
RESET configuration_parameter
RESET ALL
Syntax diagrams

Read left to right. Branches are choices, bypasses are optional, loops repeat. Select an underlined parameter to open its rule.

ALTER ROUTINE name ( argmode argname argtype , ) action RESTRICT
ALTER ROUTINE · Syntax 2
ALTER ROUTINE name ( argmode argname argtype , ) RENAME TO new_name
ALTER ROUTINE · Syntax 3
ALTER ROUTINE name ( argmode argname argtype , ) OWNER TO new_owner CURRENT_ROLE CURRENT_USER SESSION_USER
ALTER ROUTINE · Syntax 4
ALTER ROUTINE name ( argmode argname argtype , ) SET SCHEMA new_schema
ALTER ROUTINE · Syntax 5
ALTER ROUTINE name ( argmode argname argtype , ) NO DEPENDS ON EXTENSION extension_name
action
IMMUTABLE STABLE VOLATILE NOT LEAKPROOF EXTERNAL SECURITY INVOKER EXTERNAL SECURITY DEFINER PARALLEL UNSAFE RESTRICTED SAFE COST execution_cost ROWS result_rows SET configuration_parameter TO = value DEFAULT SET configuration_parameter FROM CURRENT RESET configuration_parameter RESET ALL

Description

ALTER ROUTINE changes the definition of a routine, which can be an aggregate function, a normal function, or a procedure. See under ALTER AGGREGATE, ALTER FUNCTION, and ALTER PROCEDURE for the description of the parameters, more examples, and further details.

Examples

To rename the routine foo for type integer to foobar:

ALTER ROUTINE foo(integer) RENAME TO foobar;

This command will work independent of whether foo is an aggregate, function, or procedure.

Compatibility

This statement is partially compatible with the ALTER ROUTINE statement in the SQL standard. See under ALTER FUNCTION and ALTER PROCEDURE for more details. Allowing routine names to refer to aggregate functions is a PostgreSQL extension.

See Also

ALTER AGGREGATE, ALTER FUNCTION, ALTER PROCEDURE, DROP ROUTINE

Note that there is no CREATE ROUTINE command.

Version history 3
  1. PG 13 → 14changed
  2. PG 12 → 13changed
  3. PG 10 → 11added

Related entries

Definition snapshot: 2026-09-14T13:14:25.700916+00:00@99e6866c · English manual source