分片级授权的定义
在符合 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. 如果该表通过表达式分片,则数据库服务器检查该用户是否对尝试的操作持有必要的分片
权限。如果该用户持有要求的分片权限,则数据库服务器继续处理该语句。如果不存在分
片权限,则数据库返回错误给用户。此错误表示用户没有执行该语句的权限。




