表级权限

当您以 CREATE TABLE 语句创建表时,您是该表的所有者,且自动地收到所有的表级权限。您不可将所有权转给另一用户,但您可将表级权限授予另一用户或授予一角色。(然而, 请参阅 RENAME TABLE 语句,它可更改表的名称和所有权。)

有数据库级 DBA 权限的用户自动地收到那个数据库中每一表的所有表级权限。
表级权限
元素 描述 限制 语法
column 授予对列的 References、Select 或 Update 权限。缺省的范围是 tableviewsynonym 的所有列。 必须为 tableviewsynonym 的列 标识符
owner 拥有该 tableviewsynonym 的用户名称 必须为有效的授权标识符 所有者名称
synonym, table, view 授予权限的同义词、表或视图。 在当前数据库中必须存在 标识符
GRANT 语句可罗列下列关键字中一个或多个,来指定您授予同样的用户或角色的表权限。
权限 作用
INSERT 让您插入行
DELETE 让您删除行
SELECT 让您访问 SELECT 语句中的任何列。您可通过罗列列来将 Select 权限限定到一列或多列。
UPDATE 让您访问 UPDATE 语句中的任何列。您可通过罗列列来将 Update 权限限定到到一列或多列。
REFERENCES 让您定义对列的引用约束。您必须有 Resource 权限来利用 References 权限。(然而,您可在 ALTER TABLE 语句期间添加参考约束,而无需持有数据库的 Resource 权限。)您仅需 References 权限来指出级联删除。您无需 Delete 权限来在表上放置级联删除。您可通过罗列列来将 References 权限限定到一列或多列。
INDEX 让您创建永久索引。您必须有 Resource 权限来使用 Index 权限。(有 Connect 权限的任何用户可在临时表上创建索引。)
ALTER 让您添加或删除列,修改列数据类型,添加或删除约束,将表的锁定模式由 PAGE 修改为 ROW,或为您的表添加或删除对应的 ROW 数据类型。 它还让您启用或禁用索引、约束和触发器,如 SET Database Object Mode 语句 中所描述。

您必须有 Resource 权限来使用 Alter 权限。此外,对于受 ALTER TABLE 语句影响的任何用户定义的数据类型,您还需要 Usage 权限。

UNDER 让您创建类型表之下的子表。
ALL 提供以上列出的所有权限。PRIVILEGES 关键字是可选的。

您可通过指定权限适用的列来缩小 Select、Update 或 References 权限的范围。

指定关键字 PUBLIC 为 user,如果您想要 GRANT 语句应用于所有用户。

以下一些简单的示例展示如何以 GRANT 语句来授予表级权限。

下列语句将删除和选择表 customer 中的任何列的值的权限授予用户 maryjohn。它还授予 Update 权限,但仅限于列 customer_numfnamelname
GRANT DELETE, SELECT, UPDATE (customer_num, fname, lname)
   ON customer TO mary, john;
要将上述相同的权限授予给所有授权的用户,请使用关键字 PUBLIC,如下列示例所示:
GRANT DELETE, SELECT, UPDATE (customer_num, fname, lname)
   ON customer TO PUBLIC;
对于 GBase 8s 数据库,假设名为 mary 的用户已经创建了名为 tab1 的类型表。在缺省情况下,仅用户 mary 可创建 tab1 表之下的子表。如果 mary 想要将在 tab1 表之下创建子表的能力授予名为 john 的用户,则 mary 必须输入下列 GRANT 语句:
GRANT UNDER ON tab1 TO john;

收到 tab1 表上的 Under 权限之后,用户 john 可创建 tab1 之下的一个或多个子表。

1 GBase 8s 扩展