設(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;