SET ROLE

Name

SET ROLE -- ÇöÀç ¼¼¼Ç¿¡ ¿¡¼­ÀÇ ÇöÀçÀÇ »ç¿ëÀÚ ½Äº°ÀÚ¸¦ ¼³Á¤ÇÑ´Ù

Synopsis

SET [ SESSION | LOCAL ] ROLE 
rolename

SET [ SESSION | LOCAL ] ROLE NONE
RESET ROLE

¼³¸í

ÀÌ ¸í·ÉÀº ÇöÀçÀÇ SQL ¼¼¼Ç¿¡ À־ÀÇ ÇöÀçÀÇ »ç¿ëÀÚ ½Äº°ÀÚ¸¦ rolename ·Î ¼³Á¤ÇÕ´Ï´Ù. ·Ñ¸íÀº ½Äº°ÀÚ È¤Àº string literalÀÇ ¾î´À ÂÊÀ» »ç¿ëÇØµµ ±â¼úÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. SET ROLEÀÇ µÚ, SQL ¸í·É¿¡ ´ëÇÑ ±ÇÇÑ °Ë»ç´Â, Áö¸íµÈ ·Ñ·Î º¸ÅëÀ¸·Î ·Î±×ÀÎÇßÀ» °æ¿ì¿Í °°°Ô ÇàÇØÁý´Ï´Ù.

ÁöÁ¤µÈ rolename ´Â, ÇöÀçÀÇ ¼¼¼Ç »ç¿ëÀÚ°¡ ¸â¹ö·Î¼­ ¼ÓÇÏ´Â ·ÑÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. (¼¼¼Ç »ç¿ëÀÚ°¡ ½´ÆÛ À¯Àú¿´À» °æ¿ì, ÀÓÀÇÀÇ ·ÑÀ» ¼±ÅÃÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. )

SESSION¿Í LOCAL¼ö½ÄÀÚ´Â Åë»óÀÇ SET ¸í·É°ú °°°Ô µ¿ÀÛÇÕ´Ï´Ù.

NONE¿Í RESETÇü½ÄÀº, ÇöÀç »ç¿ëÀÚÀÇ ½Äº°ÀÚ°¡ ÇöÀçÀÇ ¼¼¼Ç »ç¿ëÀÚ ½Äº°ÀÚ°¡ µÇµµ·Ï ¸®¼ÂÇÕ´Ï´Ù. ÀÌ Çü½ÄÀº ¾î´À »ç¿ëÀÚ¿¡ ÀÇÇØ¼­¶óµµ ½ÇÇàÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

ÁÖ¼®

ÀÌ ¸í·ÉÀ» »ç¿ëÇØ, ±ÇÇÑÀ» Ãß°¡Çϰųª ´©±º°¡ÀÇ ±ÇÇÑÀ» Á¦ÇÑÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¼¼¼Ç »ç¿ëÀÚÀÇ ·ÑÀÌINHERITS¼Ó¼ºÀ» °¡Áö´Â °æ¿ì, ÀÚµ¿ÀûÀ¸·ÎSET ROLE·Î ¼³Á¤µÈ ¸ðµç ·ÑÀÇ ±ÇÇÑÀ» °¡Áý´Ï´Ù. ÀÌ °æ¿ì SET ROLE´Â ½ÇÁ¦ ¼¼¼Ç »ç¿ëÀÚ¿¡°Ô Á÷Á¢ ÇÒ´çÇÒ ¼ö ÀÖ°í ÀÖ´Â ±ÇÇÑ, ¼¼¼Ç »ç¿ëÀÚ°¡ ¼ÓÇÏ´Â ·Ñ¿¡ ÇÒ´çÇÒ ¼ö ÀÖ°í ÀÖ´Â ±ÇÇÑÁß, Áö¸íµÈ ·Ñ·Î »ç¿ë °¡´ÉÇÑ ±ÇÇÑÀ» ³²°Ü, ¿Ü¸¦ ¸ðµÎ »èÁ¦ÇÕ´Ï´Ù. ÇÑÆí, ¼¼¼Ç »ç¿ëÀÚÀÇ ·ÑÀÌNOINHERITS¼Ó¼ºÀ» °¡Áö´Â °æ¿ì, ¼¼¼Ç »ç¿ëÀÚ¿¡°Ô Á÷Á¢ ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø ±ÇÇÑÀ» ¸ðµÎ »èÁ¦ÇØ, Áö¸íµÈ ·Ñ·Î ÀÌ¿ë °¡´ÉÇÑ ±ÇÇÑÀ» ȹµæÇÕ´Ï´Ù.

ƯÈ÷, ½´ÆÛ À¯Àú°¡ ºñƯ±Ç »ç¿ëÀÚ¿¡°Ô·ÎÀÇSET ROLE¸¦ ½Ç½ÃÇϸé, ½´ÆÛ À¯Àú ±ÇÇÑÀ» ÀÒ°Ô µË´Ï´Ù.

SET ROLE´Â SET SESSION AUTHORIZATION °ú ºñ½ÁÇÑ ¿µÇâ·ÂÀ» °°°í ÀÖÁö¸¸ ÇàÇØÁö´Â ±ÇÇÑ °Ë»ç´Â ²Ï ´Ù¸¨´Ï´Ù. ¶ÇÇÑ, SET SESSION AUTHORIZATION ³ªÁß¿¡SET ROLE¸í·ÉÀ» À§ÇØ ±× ·êÀ» Çã¶ôµÇ´Â °ÍÀ» °áÁ¤µË´Ï´Ù. ±×·¯³ª SET ROLE¸¦ »ç¿ëÇØ ·ÑÀ» º¯°æÇßÀ» °æ¿ì, ±× ÈÄ¿¡ ½ÇÇàÇÏ´ÂSET ROLE¸í·ÉÀ¸·Î Çã¶ôµÈ ·Ñ·Î º¯°æµÇÁö ¾Ê½À´Ï´Ù.

SET ROLE´Â SECURITY DEFINERÇÔ¼ö¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

¿¹Á¦

SELECT SESSION_USER, CURRENT_USER;

 session_user | current_user 
--------------+--------------
 peter        | peter

SET ROLE 'paul';

SELECT SESSION_USER, CURRENT_USER;

 session_user | current_user 
--------------+--------------
 peter        | paul

ȣȯ¼º

PostgreSQL allows identifier syntax ("rolename"), while the SQL standard requires the role name to be written as a string literal. SQL does not allow this command during a transaction; PostgreSQL does not make this restriction because there is no reason to. The SESSION and LOCAL modifiers are a PostgreSQL extension, as is the RESET syntax. --> PostgreSQL¿¡¼­´Â ½Äº°ÀÚ ±¸¹®("rolename")À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, Ç¥ÁØ SQL¿¡¼­´Â ·Ñ¸íÀ» string literal·Î¼­ ±â¼úÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. SQL¿¡¼­´Â Æ®·£Àè¼Ç(transaction)³»¿¡¼­ ÀÌ ¸í·ÉÀ» ½ÇÇàÇÏ´Â °ÍÀ» Çã°¡Çϰí ÀÖ½À´Ï´Ù. PostgreSQL¿¡¼­´Â ÀÌÀ¯°¡ ¾ø±â ¶§¹®¿¡ Á¦ÇÑÀº ¾ø½À´Ï´Ù. SESSION,LOCAL¼ö½ÄÀÚ ¹× RESET±¸¹®Àº PostgreSQLÀÇ È®ÀåÀÔ´Ï´Ù.

°ü·Ã Ç׸ñ

SET SESSION AUTHORIZATION