メインコンテンツへスキップ
別のユーザーとしてクエリを実行できます。

構文

EXECUTE AS target_user;
EXECUTE AS target_user subquery;
最初の形式 (subquery なし) では、現在のセッションで以降に実行されるすべてのクエリが、指定した target_user として実行されるようになります。 2 番目の形式 (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 には任意のユーザーとしてコマンドを実行することを許可します。 別のユーザーとして実行している間は、関数 currentUser() はそのユーザー名を返し、 関数 authenticatedUser() は実際に認証されたユーザー名を返します。

SELECT currentUser(), authenticatedUser(); -- 出力: "default    default"
CREATE USER james;
EXECUTE AS james SELECT currentUser(), authenticatedUser(); -- 出力: "james    default"
最終更新日 2026年6月10日