設定當前會話的目前使用者標識符。
文法
SET ROLE { rolename | NONE }
說明
此命令將當前 SQL 會話內容相關的目前使用者標識符設定為 rolename。在 SET ROLE 之後,執行 SQL 命令的許可權檢查,就好像指定的角色是最初登入的角色一樣。
指定的 rolename 必須是當前會話使用者所屬的角色。
注釋
可以使用此命令添加特權或者限制某個使用者的特權。如果會話使用者角色具有 INHERITS 屬性,則它將自動擁有可執行 SET
ROLE 以設定為的每個角色的所有特權;在這種情況下,SET ROLE 有效地刪除了直接分配給會話使用者及其所屬其他角色的所有特權,只留下指定角色可用的特權。另一方面,如果會話使用者角色具有 NOINHERITS 屬性,則 SET
ROLE 將刪除直接分配給會話使用者的特權,而擷取對指定角色可用的特權。特別是,當超級使用者選擇執行 SET ROLE 以將角色設定為非超級使用者角色時,該超級使用者將失去其超級使用者特權。
樣本
使用者 mary 具有 admins 角色的身份:
SET ROLE admins;
使用者 mary 恢複了其自己的身份:
SET ROLE NONE;