南大通用GBase8s 常用SQL语句(154)

GRANTFRAGMENT语句用于对本地数据库中基于表达式分片的表分配特定权限,如INSERT、UPDATE和DELETE。此语句是SQL ANSI/ISO标准的扩展,允许用户或角色对表的特定分片拥有操作权限,而不必具有整个表的权限。分片级权限只适用于表达式分片的表,并在sysfragauth系统目录表中记录。权限的授予和撤销会影响数据库服务器对DML语句的验证算法。
摘要由CSDN通过智能技术生成

    1. GRANT FRAGMENT 语句

使用 GRANT FRAGMENT 语句来对本地数据库中的表分片分配权限,如果该表是通过表达式分片的话。

语法

 

元素

描述

限制

语法

fragment 

分片的名称

必须存在;不可用引号定界

标识符 

grantor 

可取消该权限的用户

user

所有者名称 

owner 

拥有 table 的用户

必须为 table 的所有者

所有者名称 

role 

获得权限的角色

sysusers 中必须存在

所有者名称 

table 

对其授予分片权限的分片表

必须存在且必须通过表达式分片

标识符 

user 

要将权限授予其的那个用户

必须为有效的授权标识符

所有者名称 

用法

此语句是对 SQL 的 ANSI/ISO 标准的扩展。

使用 GRANT FRAGMENT 语句来将对表的个别分段的任何插入、更新和删除访问权限授予用户(或角色)。GRANT FRAGMENT 语句仅对根据基于表达式的分布方案分片的表是有效的。要了解对此类分片策略的说明,请参阅 表达式分布方案。

分片级权限

跟在 FRAGMENT 关键字之后的一个关键字或多个关键字指定分片级权限,这些权限是表级权限的一个逻辑子集:

分片级权限

 

这些关键字对应于下列分片级权限:

关键字      对被授予者的作用

ALL        获得对分片的插入、删除和更新权限

INSERT     可将行插入到分片内

DELETE    可从分片删除行

UPDATE    可更新在分片中的和在任何列中的行。

分片级授权的定义

在符合 ANSI 的数据库中,所有者隐式地获得对一新创建的表的所有表级权限,但其他用户得不到这些权限。

对一分片表有表权限的用户隐式地拥有对该表的所有分片的权限。这些权限不记录在 sysfragauth 系统目录表中。

当在不符合 ANSI 的数据库中创建分片表时,表的所有者隐式地获得该表上所有表级权限,且在缺省情况下其他用户(即 PUBLIC)获得所有分片级权限。在 systabauth 系统目录表中显式地记录授予 PUBLIC 的权限。

然而,如果您使用 REVOKE 语句来撤销现有的表级权限,则可使用 GRANT FRAGMENT 语句来给用户、角色或 PUBLIC 恢复指定的对该分片的一些子集的表级权限。

不论数据库是否符合 ANSI,您都可使用 GRANT FRAGMENT 语句来对通过表达式分片的表的一个或多个分片授予显式 Insert、Update 和 Delete 权限。在 sysfragauth 系统目录表中显式地记录 GRANT FRAGMENT 语句授予的权限。

通过 GRANT FRAGMENT 语句对表分片授予的 Insert、Update 和 Delete 权限统称为分片级权限分片级授权

分片级授权在语句验证中的作用

分片级权限使得用户能够对表分片执行 INSERT、DELETE 和 UPDATE 数据操作语言(DML)语句,即使被授权者对整个表缺乏 Insert、Update 和 Delete 权限。缺乏表权限的用户可在授权的分片中插入、删除和更新行,这是用于数据库服务器验证 DMIL 语句的算法决定的。此算法由下列检查构成:

  1. 当用户执行 INSERT、DELETE 或 UPDATE 语句时,数据库服务器首先检查该用户对尝试的操作是否有必要的表权限。如果表权限存在,则继续处理该语句。
  2. 如果不存在表权限,则数据库服务器检查该表是否通过表达式分片。如果该表未通过表达式分片,则数据库服务器返回错误给用户。此错误表示用户没有权限执行该语句。
  3. 如果该表通过表达式分片,则数据库服务器检查该用户是否对尝试的操作持有必要的分片权限。如果该用户持有要求的分片权限,则数据库服务器继续处理该语句。如果不存在分片权限,则数据库返回错误给用户。此错误表示用户没有执行该语句的权限。

分片级权限的持续时间

分片级权限的持续时间与分片策略的持续时间关联在一起成为一个整体。

如果您通过 DROP TABLE 语句或通过 ALTER FRAGMENT 语句的 INIT、DROP 或 DETACH 子句删除分片策略,则还删除存在于受影响的分片的所有权限。类似地,如果您删除表的分片,则还删除存在于该分片的任何权限。

作为 ALTER FRAGMENT 语句的 DETACH 或 INIT 子句的产物而创建的表,当这些分片是分片表的一部分时,不保持以前的一个分片或多个分片拥有的权限。相反,这些表采用缺省的表权限。

如果一个定义分片权限的表更改,更改为采用轮转法策略或其他表达式策略的表,则还删除该分片权限,且该表采用缺省的表权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值