ALL 关键字将所有可能的表级权限授予指定的用户。如果对于 grantor 任何或所有表级权限都不存在,则带有 ALL 关键字的 GRANT 语句成功(如同
SQLCODE 设置为零,即使对于 grantor 在表上可能的权限设置为空)。然而,在这种情况下,返回下列
SQLSTATE 警告:
01007 - Privilege not granted.
例如,假设用户 ted 在 customer 上有 Select 和 Insert 权限,将那些权限授予其他用户。
用户
ted 想要将所有表级权限授予用户
tania。因此,用户
ted 发出下列 GRANT 语句:
GRANT ALL ON customer TO tania;
此语句成功地执行,但由于下列原因返回
SQLSTATE 代码
01007:
- 该语句成功地将 Select 和 Insert 权限授予用户 tania,因为用户 ted 有那些权限和将那些权限授予其他用户的权利。
- ALL 关键字暗含的其他权限不可由 ted 授予,因此没有授予用户 tania。
如果您以 ALL 关键字授予所有表级权限,则仅当该表为类型表时该权限才包括 Under 权限。ALL 权限的授予不包括 Under 权限,如果该表不是基于 ROW
类型的。
如果表所有者授予传统的关系表 ALL 权限,并在后来将那个表更改为类型表,则表所有者必须明确地授予 Under 权限来允许其他用户创建它之下的子表。