ALTER_ROUTINE(7pg13)

πŸ“¦ version 13.23, in opensuse-leap 16.0

πŸ’… ALTER_ROUTINE β€” changing the definition of a routine

okay bestie, so this is the ALTER ROUTINE page from the PostgreSQL 13.23 docs, and it's genuinely one of the most "one size fits all" commands out there. Let's get into it ✨


✨ NAME ✨

ALTER_ROUTINE β€” change the definition of a routine


πŸŽ€ SYNOPSIS πŸŽ€

like, here's the whole vibe, verbatim:

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_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

and action is one of these icons right here:

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 πŸ¦‹

so ALTER ROUTINE changes the definition of a routine, and a routine can be any of these three besties:

  • an aggregate function
  • a normal function
  • a procedure

that's the whole point β€” it's the umbrella command that doesn't care which one you actually have πŸ’…

for the actual description of the parameters, plus more examples and further details, go look under ALTER AGGREGATE (ALTER_AGGREGATE(7)), ALTER FUNCTION (ALTER_FUNCTION(7)), and ALTER PROCEDURE (ALTER_PROCEDURE(7)). they're the ones with the lore ✨


🌸 EXAMPLES 🌸

say you wanna rename the routine foo for type integer to foobar. iconic. do this:

ALTER ROUTINE foo(integer) RENAME TO foobar;

and the gorgeous part? this command will work independent of whether foo is an aggregate, function, or procedure. it literally does not care. main character energy fr fr πŸ‘‘


🌈 COMPATIBILITY 🌈

this statement is partially compatible with the ALTER ROUTINE statement in the SQL standard. partial! so not a full slay. check under ALTER FUNCTION (ALTER_FUNCTION(7)) and ALTER PROCEDURE (ALTER_PROCEDURE(7)) for more details 🫢

also, allowing routine names to refer to aggregate functions is a PostgreSQL extension. iykyk πŸ’œ


⭐ SEE ALSO ⭐

heads up bestie β€” note that there is no CREATE ROUTINE command. don't go looking for it, it's not there 😭

and that's the page!! πŸ’– this was the PostgreSQL 13.23 documentation, dated 2025 β€” go off and alter some routines, you've got this πŸŽ€πŸ¦‹βœ¨

πŸ“¦ where this page comes from