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_user가 1로 설정되고 IMPERSONATE 권한이 부여되어야 해요. 예를 들어 다음 명령은
GRANT IMPERSONATE ON user1 TO user2;
GRANT IMPERSONATE ON * TO user3;
사용자 user2가 EXECUTE 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"