ALTER FUNCTION
ALTER FUNCTION â измениÑÑ Ð¾Ð¿Ñеделение ÑÑнкÑии
СинÑакÑиÑ
ALTER FUNCTIONимÑ( [ [Ñежим_аÑгÑменÑа] [имÑ_аÑгÑменÑа]Ñип_аÑгÑменÑа[, ...] ] )дейÑÑвие[ ... ] [ RESTRICT ] ALTER FUNCTIONимÑ( [ [Ñежим_аÑгÑменÑа] [имÑ_аÑгÑменÑа]Ñип_аÑгÑменÑа[, ...] ] ) RENAME TOновое_имÑALTER FUNCTIONимÑ( [ [Ñежим_аÑгÑменÑа] [имÑ_аÑгÑменÑа]Ñип_аÑгÑменÑа[, ...] ] ) OWNER TO {новÑй_владелеÑ| CURRENT_USER | SESSION_USER } ALTER FUNCTIONимÑ( [ [Ñежим_аÑгÑменÑа] [имÑ_аÑгÑменÑа]Ñип_аÑгÑменÑа[, ...] ] ) SET SCHEMAноваÑ_ÑÑ ÐµÐ¼Ð°ALTER FUNCTIONимÑ( [ [Ñежим_аÑгÑменÑа] [имÑ_аÑгÑменÑа]Ñип_аÑгÑменÑа[, ...] ] ) DEPENDS ON EXTENSIONимÑ_ÑаÑÑиÑениÑÐдедейÑÑÐ²Ð¸ÐµÐ¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑледÑÑÑим: CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT IMMUTABLE | STABLE | VOLATILE [ NOT ] LEAKPROOF [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER PARALLEL { UNSAFE | RESTRICTED | SAFE } COSTÑÑоимоÑÑÑ_вÑполнениÑROWSÑÑÑок_в_ÑезÑлÑÑаÑеSETпаÑамеÑÑ_конÑигÑÑаÑии{ TO | = } {знаÑение| DEFAULT } SETпаÑамеÑÑ_конÑигÑÑаÑииFROM CURRENT RESETпаÑамеÑÑ_конÑигÑÑаÑииRESET ALL
ÐпиÑание
ALTER FUNCTION изменÑÐµÑ Ð¾Ð¿Ñеделение ÑÑнкÑии.
ÐÑполниÑÑ ALTER FUNCTION Ð¼Ð¾Ð¶ÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑооÑвеÑÑÑвÑÑÑей ÑÑнкÑии. ЧÑÐ¾Ð±Ñ ÑмениÑÑ ÑÑ
ÐµÐ¼Ñ ÑÑнкÑии, необÑ
одимо Ñакже имеÑÑ Ð¿Ñаво CREATE в новой ÑÑ
еме. ЧÑÐ¾Ð±Ñ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, ÑÑебÑеÑÑÑ Ñакже бÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвеннÑм или опоÑÑедованнÑм Ñленом новой Ñоли, а ÑÑа ÑÐ¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° имеÑÑ Ð¿Ñаво CREATE в ÑÑ
еме ÑÑнкÑии. (С Ñакими огÑаниÑениÑми пÑи Ñмене владелÑÑа не пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð¸Ñего Ñакого, ÑÑо нелÑÐ·Ñ Ð±Ñло Ð±Ñ ÑделаÑÑ, Ð¸Ð¼ÐµÑ Ð¿Ñаво ÑдалиÑÑ Ð¸ Ð²Ð½Ð¾Ð²Ñ ÑоздаÑÑ ÑÑнкÑиÑ. Ðднако ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа ÑÑнкÑии в лÑбом ÑлÑÑае.)
ÐаÑамеÑÑÑ
имÑÐÐ¼Ñ ÑÑÑеÑÑвÑÑÑей ÑÑнкÑии (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹).
Ñежим_аÑгÑменÑаРежим аÑгÑменÑа:
IN,OUT,INOUTилиVARIADIC. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑIN. ÐамеÑÑÑе, ÑÑоALTER FUNCTIONне ÑÑиÑÑÐ²Ð°ÐµÑ Ð°ÑгÑменÑÑOUT, Ñак как Ð´Ð»Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑии ÑÑнкÑии нÑÐ¶Ð½Ñ ÑолÑко ÑÐ¸Ð¿Ñ Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð°ÑгÑменÑов. ÐоÑÑÐ¾Ð¼Ñ Ð´Ð¾ÑÑаÑоÑно пеÑеÑиÑлиÑÑ ÑолÑко аÑгÑменÑÑIN,INOUTиVARIADIC.имÑ_аÑгÑменÑаÐÐ¼Ñ Ð°ÑгÑменÑа. ÐамеÑÑÑе, ÑÑо на Ñамом деле
ALTER FUNCTIONне обÑаÑÐ°ÐµÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ на имена аÑгÑменÑов, Ñак как Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñной иденÑиÑикаÑии ÑÑнкÑии доÑÑаÑоÑно ÑолÑко Ñипов аÑгÑменÑов.Ñип_аÑгÑменÑаТип даннÑÑ Ð°ÑгÑменÑов ÑÑнкÑии (возможно, дополненнÑй именем ÑÑ ÐµÐ¼Ñ), еÑли ÑаковÑе имеÑÑÑÑ.
новое_имÑÐовое Ð¸Ð¼Ñ ÑÑнкÑии.
новÑй_владелеÑÐовÑй Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑÑнкÑии. ÐамеÑÑÑе, ÑÑо еÑли ÑÑнкÑÐ¸Ñ Ð¿Ð¾Ð¼ÐµÑена как
SECURITY DEFINER, в далÑнейÑем она бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ нового владелÑÑа.новаÑ_ÑÑ ÐµÐ¼Ð°ÐÐ¾Ð²Ð°Ñ ÑÑ ÐµÐ¼Ð° ÑÑнкÑии.
имÑ_ÑаÑÑиÑениÑÐÐ¼Ñ ÑаÑÑиÑениÑ, Ð¾Ñ ÐºÐ¾ÑоÑого бÑÐ´ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ ÑÑнкÑиÑ.
CALLED ON NULL INPUTRETURNS NULL ON NULL INPUTSTRICTCALLED ON NULL INPUTменÑÐµÑ ÑÑнкÑÐ¸Ñ Ñак, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð° вÑзÑвалаÑÑ, когда некоÑоÑÑе или вÑе ÐµÑ Ð°ÑгÑменÑÑ ÑÐ°Ð²Ð½Ñ NULL.RETURNS NULL ON NULL INPUTилиSTRICTменÑÐµÑ ÑÑнкÑÐ¸Ñ Ñак, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð° не вÑзÑвалаÑÑ, когда некоÑоÑÑе или вÑе ÐµÑ Ð°ÑгÑменÑÑ ÑÐ°Ð²Ð½Ñ NULL, а вмеÑÑо вÑзова авÑомаÑиÑеÑки вÑдавалÑÑ ÑезÑлÑÑÐ°Ñ NULL. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº CREATE FUNCTION.IMMUTABLESTABLEVOLATILEУÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñй ваÑÐ¸Ð°Ð½Ñ Ð¸Ð·Ð¼ÐµÐ½ÑивоÑÑи ÑÑнкÑии. ÐодÑобнее ÑÑо опиÑано в CREATE FUNCTION.
[EXTERNAL] SECURITY INVOKER[EXTERNAL] SECURITY DEFINERУÑÑанавливаеÑ, ÑвлÑеÑÑÑ Ð»Ð¸ ÑÑнкÑÐ¸Ñ Ð¾Ð¿ÑеделÑÑÑей конÑекÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи. ÐлÑÑевое Ñлово
EXTERNALигноÑиÑÑеÑÑÑ Ð´Ð»Ñ ÑооÑвеÑÑÑÐ²Ð¸Ñ ÑÑандаÑÑÑ SQL. ÐодÑобнее ÑÑо ÑвойÑÑво опиÑано в CREATE FUNCTION.PARALLELУÑÑанавливаеÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÑнкÑÐ¸Ñ ÑÑиÑаÑÑÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñной Ð´Ð»Ñ ÑаÑпаÑаллеливаниÑ. ÐодÑобнее ÑÑо опиÑано в CREATE FUNCTION.
LEAKPROOFУÑÑанавливаеÑ, ÑвлÑеÑÑÑ Ð»Ð¸ ÑÑнкÑÐ¸Ñ Ð³ÐµÑмеÑиÑной. ÐодÑобнее ÑÑо ÑвойÑÑво опиÑано в CREATE FUNCTION.
COSTÑÑоимоÑÑÑ_вÑполнениÑÐзменÑÐµÑ Ð¾ÑиенÑиÑовоÑнÑÑ ÑÑоимоÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑнкÑии. ÐодÑобнее ÑÑо опиÑÑваеÑÑÑ Ð² CREATE FUNCTION.
ROWSÑÑÑок_в_ÑезÑлÑÑаÑеÐзменÑÐµÑ Ð¾ÑиенÑиÑовоÑное ÑиÑло ÑÑÑок в ÑезÑлÑÑаÑе ÑÑнкÑии, возвÑаÑаÑÑей множеÑÑво. ÐодÑобнее ÑÑо опиÑÑваеÑÑÑ Ð² CREATE FUNCTION.
паÑамеÑÑ_конÑигÑÑаÑиизнаÑениеÐобавлÑÐµÑ Ð¸Ð»Ð¸ изменÑÐµÑ ÑÑÑÐ°Ð½Ð¾Ð²ÐºÑ Ð¿Ð°ÑамеÑÑа конÑигÑÑаÑии, вÑполнÑемÑÑ Ð¿Ñи вÑзове ÑÑнкÑии. ÐÑли задано
знаÑениеDEFAULTили, ÑÑо ÑавнознаÑно, вÑполнÑеÑÑÑ Ð´ÐµÐ¹ÑÑвиеRESET, локалÑное пеÑеопÑеделение Ð´Ð»Ñ ÑÑнкÑии ÑдалÑеÑÑÑ Ð¸ ÑÑнкÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ Ñо знаÑением, ÑÑÑановленнÑм в окÑÑжении. ÐÐ»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð²ÑÐµÑ ÑÑÑановок паÑамеÑÑов Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑÑнкÑии ÑкажиÑеRESET ALL.SET FROM CURRENTÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð´Ð»Ñ Ð¿Ð¾ÑледÑÑÑÐ¸Ñ Ð²Ñзовов ÑÑнкÑии знаÑение паÑамеÑÑа, дейÑÑвÑÑÑее в Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²ÑполнениÑALTER PROCEDURE.Ðа подÑобнÑми ÑведениÑми об Ð¸Ð¼ÐµÐ½Ð°Ñ Ð¸ знаÑениÑÑ Ð¿Ð°ÑамеÑÑов обÑаÑиÑеÑÑ Ðº SET и Ðлаве 18.
RESTRICTÐгноÑиÑÑеÑÑÑ Ð´Ð»Ñ ÑооÑвеÑÑÑÐ²Ð¸Ñ ÑÑандаÑÑÑ SQL.
ÐÑимеÑÑ
ÐеÑеименование ÑÑнкÑии sqrt Ð´Ð»Ñ Ñипа integer в square_root:
ALTER FUNCTION sqrt(integer) RENAME TO square_root;
Смена владелÑÑа ÑÑнкÑии sqrt Ð´Ð»Ñ Ñипа integer на joe:
ALTER FUNCTION sqrt(integer) OWNER TO joe;
Смена ÑÑ
ÐµÐ¼Ñ ÑÑнкÑии sqrt Ð´Ð»Ñ Ñипа integer на maths:
ALTER FUNCTION sqrt(integer) SET SCHEMA maths;
ÐбознаÑение ÑÑнкÑии sqrt Ð´Ð»Ñ Ñипа integer как завиÑимой Ð¾Ñ ÑаÑÑиÑÐµÐ½Ð¸Ñ mathlib:
ALTER FUNCTION sqrt(integer) DEPENDS ON EXTENSION mathlib;
Ðзменение пÑÑи поиÑка, коÑоÑÑй ÑÑÑанавливаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки Ð´Ð»Ñ ÑÑнкÑии:
ALTER FUNCTION check_password(text) SET search_path = admin, pg_temp;
ÐÑмена авÑомаÑиÑеÑкого опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ search_path Ð´Ð»Ñ ÑÑнкÑии:
ALTER FUNCTION check_password(text) RESET search_path;
ТепеÑÑ ÑÑнкÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ñ Ñем пÑÑÑм, коÑоÑÑй задан в Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñзова.
СовмеÑÑимоÑÑÑ
ÐÑÐ¾Ñ Ð¾Ð¿ÐµÑаÑÐ¾Ñ ÑаÑÑиÑно ÑовмеÑÑим Ñ Ð¾Ð¿ÐµÑаÑоÑом ALTER FUNCTION в ÑÑандаÑÑе SQL. СÑандаÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¼ÐµÐ½ÑÑÑ Ð±Ð¾Ð»ÑÑе ÑвойÑÑв ÑÑнкÑии, но не позволÑÐµÑ Ð¿ÐµÑеименовÑваÑÑ ÑÑнкÑии, пеÑеклÑÑаÑÑ ÐºÐ¾Ð½ÑекÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи, ÑвÑзÑваÑÑ Ñ ÑÑнкÑиÑми знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов конÑигÑÑаÑии, а Ñакже менÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, ÑÑ
ÐµÐ¼Ñ Ð¸ Ñип изменÑивоÑÑи ÑÑнкÑии. Также в ÑÑандаÑÑе Ñлово RESTRICT ÑÑиÑаеÑÑÑ Ð¾Ð±ÑзаÑелÑнÑм, Ñогда как в Postgres Pro оно не ÑÑебÑеÑÑÑ.