設(shè)置當(dāng)前會話的當(dāng)前用戶標(biāo)識符。
語法
SET ROLE { rolename | NONE }
說明
此命令將當(dāng)前 SQL 會話上下文的當(dāng)前用戶標(biāo)識符設(shè)置為 rolename
。在 SET ROLE
之后,執(zhí)行 SQL 命令的權(quán)限檢查,就好像指定的角色是最初登錄的角色一樣。
指定的 rolename
必須是當(dāng)前會話用戶所屬的角色。
注釋
可以使用此命令添加特權(quán)或者限制某個用戶的特權(quán)。如果會話用戶角色具有 INHERITS
屬性,則它將自動擁有可執(zhí)行 SET
ROLE
以設(shè)置為的每個角色的所有特權(quán);在這種情況下,SET ROLE
有效地刪除了直接分配給會話用戶及其所屬其他角色的所有特權(quán),只留下指定角色可用的特權(quán)。另一方面,如果會話用戶角色具有 NOINHERITS
屬性,則 SET
ROLE
將刪除直接分配給會話用戶的特權(quán),而獲取對指定角色可用的特權(quán)。特別是,當(dāng)超級用戶選擇執(zhí)行 SET ROLE
以將角色設(shè)置為非超級用戶角色時,該超級用戶將失去其超級用戶特權(quán)。
示例
用戶 mary 具有 admins 角色的身份:
SET ROLE admins;
用戶 mary 恢復(fù)了其自己的身份:
SET ROLE NONE;