第二章 SQL命令参考-SET SESSIONAUTHORIZATION

来源:互联网 发布:linux查看dns命令 编辑:程序博客网 时间:2024/06/05 18:33

SET SESSIONAUTHORIZATION

 

Sets the session role identifier and thecurrent role identifier of the current session.

 

Synopsis

SET [SESSION |LOCAL] SESSION AUTHORIZATION rolename

SET [SESSION |LOCAL] SESSION AUTHORIZATION DEFAULT

RESET SESSIONAUTHORIZATION

 

Description

此命令将会话角色标识符和当前SQL会话上下文的当前角色标识符设置为角色名称。角色名称可以写成标识符或字符串文字。例如,使用此命令可以暂时成为非特权用户,然后再切换回超级用户。

会话角色标识符最初设置为客户端提供的(可能已认证的)角色名称。

当前的角色标识符通常等于会话用户标识符,但是可能在setuid函数和类似机制的情况下暂时改变;它也可以通过SET ROLE进行更改。当前用户标识符与权限检查相关。

会话用户标识只有在初始会话用户(认证用户)具有超级用户权限的情况下才能被改变。否则,该命令仅在指定了经过验证的用户名时才被接受。

DEFAULT和RESET形式将会话和当前用户标识符重置为最初认证的用户名。这些形式可以由任何用户执行。

 

Parameters

SESSION

指定该命令对当前会话生效。 这是默认的。

LOCAL

指定该命令仅对当前事务生效。 COMMIT或ROLLBACK后,会话级别的设置再次生效。 请注意,如果SET LOCAL在事务外执行,则它将不起作用。

rolename

要承担的角色的名称。

NONE

RESET

将会话和当前角色标识重置为用于登录的角色标识。

 

Examples

SELECTSESSION_USER, CURRENT_USER;

session_user |current_user

--------------+--------------

peter  | peter

SET SESSIONAUTHORIZATION 'paul';

SELECTSESSION_USER, CURRENT_USER;

session_user |current_user

--------------+--------------

 

paul| paul

 

Compatibility

SQL标准允许一些其他表达式代替文字角色名称,但这些选项在实践中并不重要。 Greenplum数据库允许标识符语法(角色名),而SQL不支持。 SQL在事务过程中不允许此命令; Greenplum数据库不做这个限制。 SESSION和LOCAL修饰符是一个Greenplum数据库扩展,RESET语法也是如此。

 

See Also

SETROLE

 

 

原创粉丝点击