分片级权限使得用户能够对表分片执行 INSERT、DELETE 和 UPDATE 数据操作语言(DML)语句,即使被授权者对整个表缺乏 Insert、Update
和 Delete
权限。缺乏表权限的用户可在授权的分片中插入、删除和更新行,这是用于数据库服务器验证 DMIL 语句的算法决定的。此算法由下列检查构成:
- 当用户执行 INSERT、DELETE 或 UPDATE 语句时,数据库服务器首先检查该用户对尝试的操作是否有必要的表权限。如果表权限存在,则继续处理该语句。
- 如果不存在表权限,则数据库服务器检查该表是否通过表达式分片。如果该表未通过表达式分片,则数据库服务器返回错误给用户。此错误表示用户没有权限执行该语句。
- 如果该表通过表达式分片,则数据库服务器检查该用户是否对尝试的操作持有必要的分片权限。如果该用户持有要求的分片权限,则数据库服务器继续处理该语句。如果不存在分片权限,则数据库返回错误给用户。此错误表示用户没有执行该语句的权限。