| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
ÀÌ ¸í·ÉÀº ÇöÀçÀÇ 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ÀÇ È®ÀåÀÔ´Ï´Ù.