EXECUTE AS

EXECUTE AS

다른 사용자를 대신해 쿼리를 실행할 수 있게 해줘요.

출처: 문서

본문

Syntax

EXECUTE AS target_user;
EXECUTE AS target_user subquery;

첫 번째 형태(subquery 없이)는 현재 세션의 이후 모든 쿼리가 지정된 target_user를 대신해 실행되도록 설정해요.

두 번째 형태(subquery 포함)는 지정된 subquery만 지정된 target_user를 대신해 실행해요.

두 형태 모두 동작하려면 구성 설정 access_control_improvements.allow_impersonate_user1로 설정되고 IMPERSONATE 권한이 부여되어야 해요. 예를 들어 다음 명령은

GRANT IMPERSONATE ON user1 TO user2;
GRANT IMPERSONATE ON * TO user3;

사용자 user2EXECUTE AS user1 ... 명령을 실행할 수 있게 하고, 사용자 user3이 어떤 사용자로도 명령을 실행할 수 있게 합니다.

다른 사용자를 가장(impersonate)하는 동안 함수 currentUser()는 그 다른 사용자의 이름을 반환하고, 함수 authenticatedUser()는 실제로 인증된 사용자의 이름을 반환해요.

Examples

SELECT currentUser(), authenticatedUser(); -- outputs "default    default"
CREATE USER james;
EXECUTE AS james SELECT currentUser(), authenticatedUser(); -- outputs "james    default"

더 알아보기 (Learn more)