GRANT(表空间特权)语句

此格式的 GRANT 语句授予对表空间的特权。

调用

此语句可以嵌入在应用程序中,也可通过动态 SQL 语句来发出。 它是一个可执行语句,仅当 DYNAMICRULES 运行行为对于程序包有效时才能动态编译 (SQLSTATE 42509)。

授权

语句授权标识所拥有的特权必须至少包括下列其中一项权限:

语法

Read syntax diagramSkip visual syntax diagramGRANTUSEOF TABLESPACEtablespace-name TO,USERGROUPROLEauthorization-namePUBLICWITH GRANT OPTION

描述

USE
授予特权以在创建表时对表空间进行指定或缺省设置。 表空间的创建者使用 GRANT 选项自动接收 USE 特权。
OF TABLESPACE tablespace-name
标识要授予 USE 特权的表空间。 该表空间不能是 SYSCATSPACE (SQLSTATE 42838) 或 SYSTEM TEMPORARY 表空间 (SQLSTATE 42809)。
TO
指定向谁授予 USE 特权。
用户
指定 authorization-name 识别用户。
GROUP
指定 authorization-name 识别组名。
角色
指定 authorization-name 识别角色名称。 该角色名称必须存在于当前服务器上 (SQLSTATE 42704)。
authorization-name
列示一个或多个用户、组或角色的授权标识。

授权标识列表不得包括发出该语句的用户的授权标识 (SQLSTATE 42502)。

PUBLIC
将 USE 特权授予一组用户 (授权标识)。
WITH GRANT OPTION
允许指定的 authorization-name 将 USE 特权授予他人。

规则

  • 对于每个指定的 authorization-name,如果 USER、GROUP 或 ROLE 均未指定,那么:
    • 如果对实例有效的安全插件无法确定 authorization-name 的状态,那么会返回错误 (SQLSTATE 56092)。
    • 如果 authorization-name 在数据库中定义为 ROLE,并根据有效的安全插件定义为 GROUP 或 USER,那么会返回错误 (SQLSTATE 56092)。
    • 如果 authorization-name 根据有效的安全插件同时定义为 USER 和 GROUP,那么会返回错误 (SQLSTATE 56092)。
    • 如果 authorization-name 根据有效的安全插件仅定义为 USER,或者未定义,那么假定为 USER。
    • 如果 authorization-name 根据有效的安全插件仅定义为 GROUP,那么假定为 GROUP。
    • 如果 authorization-name 在数据库中仅定义为 ROLE,那么假定为 ROLE。

示例

授予用户 BOBBY 在表空间 PLANS 中创建表以及将此特权授予其他用户的能力。
   GRANT USE OF TABLESPACE PLANS TO BOBBY WITH GRANT OPTION