GRANT语句(表或视图权限)

GRANT语句的这种形式授予对表和视图的权限。

GRANT(表或视图权限)的语法

阅读语法图跳过可视化语法图GRANTALLPRIVILEGES,ALTERDELETEINDEXINSERTREFERENCES(,列名)SELECTTRIGGERUNLOADUPDATE(,列名)ONTABLE ,table-name视图名称 TO ,授权名称ROLE角色名称PUBLIC WITH GRANT OPTION

GRANT(表或视图权限)描述

ALL ALL PRIVILEGES
授予您在ON子句中指定的表和视图的所有权限。

如果您没有使用全部关键词,则必须使用以下列表中的一个或多个关键词。 对于您使用的每个关键字,您必须在ON子句中标识的每个表或视图中拥有GRANT权限。

ALTER
更改开始授予修改指定表或为指定表创建触发器的权限。 ALTER命令不能用于辅助表或视图。更改结束
删除
授予删除指定表格或视图中的行的权限。 辅助表上不能授予DELETE权限。
INDEX
授予在指定表上创建索引的权限。 索引不能授予视图。
INSERT
授予在指定表格或视图中插入行的权限。 INSERT不能在辅助表上执行。
REFERENCES
授予添加引用约束的权限,其中指定表为父表。 如果未指定列名列表,或者通过指定所有特权授予引用权限,则被授权者可以使用表中的所有列作为父键来定义引用约束,包括那些后来通过ALTER TABLE语句添加的列。 此特权不能在视图或辅助表格上授予。
参考资料 (列名,...)
授予添加或删除引用约束的权限,其中指定表是父表,仅使用列列表中指定的列作为父键。 每个 column-name 都必须是非限定名称,用于识别 ON 子句中识别的表的某个列。 此特权不能在视图或辅助表格上授予。
SELECT
授予从指定表或视图中创建视图或读取数据的权限。 不能在辅助表上授予 SELECT 权限。
TRIGGER
授予在指定表上创建触发器的权限。 TRIGGER不能在辅助表或视图中使用。
更改开始UNLOAD更改结束
更改开始FL 500 允许使用卸载工具。 UNLOAD命令不能用于辅助表或视图。更改结束
UPDATE
授予更新指定表或视图中的行的权限。 辅助表上无法授予UPDATE权限。
UPDATE (列名 ,...)
授予仅更新指定列的权限。 每个列名必须是ON子句中标识的每个表或视图的列的无限定名称。 每个列名不得标识辅助表的列。
在表名视图名
指定您要授予权限的表或视图。 列表可以是表名或视图名,也可以是两者的组合。 已声明的临时表和为XML列隐式创建的表不得被识别。

如果使用 GRANT ALL,则对于每个已命名的表或视图,权限集(在 GRANT 语句中的 授权中描述)必须至少包含一个带有 GRANT 选项的权限。

TO
请参阅 GRANT语句 ,了解TO子句的说明。
WITH GRANT OPTION
关于WITH GRANT OPTION子句的描述,请参阅 GRANT语句

GRANT注释(表或视图权限)

引用权限不能替代更改权限。 添加此内容是为了符合SQL标准。 要定义引用父表的外国键,您必须拥有REFERENCES或ALTER权限,或同时拥有这两项权限。

对于创建的临时表,只能授予ALL或ALL PRIVILEGES权限。 无法授予特定餐桌特权。 此外,仅ALTER、DELETE、INSERT和SELECT权限适用于已创建的临时表。

要查看已创建的临时表,可以授予全部或特定的UPDATE、DELETE、INSERT和SELECT权限。 当指定了ALL时,仅UPDATE、DELETE、INSERT和SELECT权限适用于已创建临时表上的视图。 但是,不允许对视图进行更新操作。

要授予已创建临时表的表权限,权限集必须包含以下内容之一:

  • SYSADM
  • DBADM on DSNDB06
  • 创建的临时表的所有权

要授予对已创建临时表的视图的表权限,权限集必须包括以下内容之一:

  • SYSADM
  • 创建的临时表的所有权

对于已声明的临时表,不能授予任何权限。 当定义一个已声明的临时表时,PUBLIC将隐式获得该表的所有权限(无需GRANT授权)。 这些特权不会记录在 Db2 目录中,且不可撤销。

对于辅助表,只能授予INDEX权限。 与辅助表关联的基表的删除、插入、选择和更新权限扩展到辅助表。

  • ALTER
  • INDEX
  • REFERENCES
  • TRIGGER

GRANT示例(表或视图权限)

示例1 :向用户PULASKI授予表DSN8C10.EMP 的SELECT权限。
   GRANT SELECT ON DSN8C10.EMP TO PULASKI;
示例2 :向当前服务器上的所有用户授予对表DSN8C10.EMP 中列EMPNO和WORKDEPT的UPDATE权限。
   GRANT UPDATE (EMPNO,WORKDEPT) ON TABLE DSN8C10.EMP TO PUBLIC;
示例3: 使用WITH GRANT OPTION将表DSN8C10.EMP 的所有权限授予用户KWAN和THOMPSON。
   GRANT ALL ON TABLE DSN8C10.EMP TO KWAN,THOMPSON WITH GRANT OPTION;
示例4 :向网络中的每个用户授予表DSN8C10.DEPT 的SELECT和UPDATE权限。
   GRANT SELECT, UPDATE ON TABLE DSN8C10.DEPT
     TO PUBLIC;

即使有这笔拨款,一些网络用户也可能根本无法访问该表,或者无法访问该表所在的子系统中的任何其他对象。 对子系统的访问控制涉及网络中子系统的通信数据库。 通信数据库的表格在 Db2 目录表中进行了描述。 访问控制详见 “保护 Db2 ”。

示例5 :将表 DSN9910.EMP 的ALTER权限授予角色 ROLE1:
   GRANT ALTER ON TABLE DSN9910.EMP TO ROLE ROLE1;