SET SESSION AUTHORIZATION
SET SESSION AUTHORIZATION â ÑÑÑановиÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑеанÑа и иденÑиÑикаÑÐ¾Ñ ÑекÑÑего полÑзоваÑÐµÐ»Ñ Ð² ÑÐ°Ð¼ÐºÐ°Ñ ÑеанÑа
СинÑакÑиÑ
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION имÑ_полÑзоваÑелÑ
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
RESET SESSION AUTHORIZATIONÐпиÑание
ÐÑа команда менÑÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑеанÑа и иденÑиÑикаÑÐ¾Ñ ÑекÑÑего полÑзоваÑÐµÐ»Ñ Ð² ÑамкаÑ
акÑивного ÑеанÑа SQL на имÑ_полÑзоваÑелÑ. ÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°Ð¿Ð¸Ñано в виде иденÑиÑикаÑоÑа или ÑÑÑоковой конÑÑанÑÑ. С помоÑÑÑ ÑÑой командÑ, можно, напÑимеÑ, вÑеменно пеÑеклÑÑиÑÑÑÑ Ð½Ð° непÑивилегиÑованного полÑзоваÑелÑ, ÑоÑ
Ñанив возможноÑÑÑ Ð·Ð°Ñем ÑÑаÑÑ ÑÑпеÑполÑзоваÑелем.
ÐденÑиÑикаÑоÑом полÑзоваÑÐµÐ»Ñ ÑеанÑа изнаÑалÑно пÑинимаеÑÑÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, введÑнное клиенÑом (возможно, пÑоÑедÑее пÑовеÑÐºÑ Ð¿Ð¾Ð´Ð»Ð¸Ð½Ð½Ð¾ÑÑи). ÐденÑиÑикаÑÐ¾Ñ ÑекÑÑего полÑзоваÑÐµÐ»Ñ Ð¾Ð±ÑÑно ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑом полÑзоваÑÐµÐ»Ñ ÑеанÑа, но Ð¼Ð¾Ð¶ÐµÑ Ð²Ñеменно менÑÑÑÑÑ Ð² ÑÑнкÑиÑÑ
Ñ Ñ
аÑакÑеÑиÑÑикой SECURITY DEFINER и подобнÑми меÑ
анизмами; Ñакже его можно измениÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ SET ROLE. ÐденÑиÑикаÑÐ¾Ñ ÑекÑÑего полÑзоваÑÐµÐ»Ñ Ð¿ÑинимаеÑÑÑ Ð²Ð¾ внимание пÑи пÑовеÑке ÑазÑеÑений.
ÐденÑиÑикаÑÐ¾Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑеанÑа можно измениÑÑ, ÑолÑко еÑли наÑалÑнÑй полÑзоваÑÐµÐ»Ñ ÑеанÑа (аÑÑенÑиÑиÑиÑованнÑй полÑзоваÑелÑ) Ð¸Ð¼ÐµÐµÑ Ð¿Ñава ÑÑпеÑполÑзоваÑелÑ. РпÑоÑивном ÑлÑÑае ÑÑа команда ÑазÑеÑаеÑÑÑ, ÑолÑко еÑли в ней ÑказÑваеÑÑÑ Ð¸Ð¼Ñ Ð°ÑÑенÑиÑиÑиÑованного полÑзоваÑелÑ.
Ð£ÐºÐ°Ð·Ð°Ð½Ð¸Ñ SESSION и LOCAL дейÑÑвÑÑÑ Ð½Ð° ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ñак же, как и на обÑÑнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SET.
ФоÑÐ¼Ñ DEFAULT и RESET ÑбÑаÑÑваÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ ÑекÑÑего полÑзоваÑÐµÐ»Ñ Ð¸ полÑзоваÑÐµÐ»Ñ ÑеанÑа, Ñак ÑÑо ÑекÑÑим ÑÑановиÑÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, изнаÑалÑно пÑоÑ
одивÑий пÑовеÑÐºÑ Ð¿Ð¾Ð´Ð»Ð¸Ð½Ð½Ð¾ÑÑи. ÐÑи ÑоÑÐ¼Ñ Ð¼Ð¾Ð³ÑÑ Ð²ÑполнÑÑÑÑÑ Ð»ÑбÑм полÑзоваÑелем.
ÐÑимеÑаниÑ
SET SESSION AUTHORIZATION нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð² ÑÑнкÑии Ñ Ñ
аÑакÑеÑиÑÑикой SECURITY DEFINER.
ÐÑимеÑÑ
SELECT SESSION_USER, CURRENT_USER; session_user | current_user --------------+-------------- peter | peter SET SESSION AUTHORIZATION 'paul'; SELECT SESSION_USER, CURRENT_USER; session_user | current_user --------------+-------------- paul | paul
СовмеÑÑимоÑÑÑ
СÑандаÑÑ SQL позволÑÐµÑ Ð²Ð¼ÐµÑÑо ÑÑÑоковой конÑÑанÑÑ Ð¸Ð¼Ñ_полÑзоваÑÐµÐ»Ñ ÑказÑваÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе дÑÑгие вÑÑажениÑ, но на пÑакÑике ÑÑо не оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾. PostgreSQL допÑÑÐºÐ°ÐµÑ ÑинÑакÑÐ¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑов ("), а ÑÑандаÑÑ SQL â неÑ. СÑандаÑÑ Ð½Ðµ позволÑÐµÑ Ð²ÑполнÑÑÑ ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð² ÑÑанзакÑии; в PostgreSQL Ñакого огÑаниÑÐµÐ½Ð¸Ñ Ð½ÐµÑ, Ñак как Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ Ð½ÐµÑ Ð¿ÑиÑинÑ. Ð£ÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¸Ð¼Ñ_полÑзоваÑелÑ"SESSION и LOCAL оÑноÑÑÑÑÑ Ðº ÑаÑÑиÑениÑм PostgreSQL, Ñак же, как и ÑинÑакÑÐ¸Ñ RESET.
ÐÐ°Ð±Ð¾Ñ Ð¿Ñав, ÑÑебÑемÑÑ Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑой командÑ, ÑоглаÑно ÑÑандаÑÑÑ, опÑеделÑеÑÑÑ ÑеализаÑией.