所有者名称

所有者名称指定数据库对象的所有者。当您在语法图表中引用所有者名称时使用本段。

语法

所有者名称
元素 描述 限制 语法
owner 数据库中对象所有者的用户名 最大长度为 32 个字节 必须遵守操作系统的规则。

用法

在兼容 ANSI 的数据库中,必须指定您不拥有的数据库对象的所有者。在对数据库对象的引用中,所有者名称的 ANSI/ISO 同义词时授权标识符。(然而,在对模式对象的引用中, GBase 8s 文档调用的所有者名称的 ANSI/ISO 术语是模式名称。)

在不兼容 ANSI 的数据库中,所有者名称是可选的。当创建数据库对象或用户数据范围语句时,您不需要指定所有者。如果在创建数据库对象时不指定所有者,那么在大多数情况下,数据库服务器将您的登录名指定为对象的所有者。 有关此规则的例外,请参阅 CREATE FUNCTION 语句描述中的已创建数据库对象的所有权和 CREATE PROCEDURE 语句描述中的创建数据库对象的所有权。当在所有者特权 UDR 中的 DDL 语句创建一个新的数据库对象时,例程的所有者(而非执行它的用户,如果此用户不是例程的所有者)成为新数据库对象的所有者。

如果您在数据访问语句中指定所有者,那么数据服务器会检查它的正确性,不加引号时,所有者是不区分大小写的。下面的四个查询都可以访问表 kaths.tab1 的数据:
SELECT * FROM tab1;
            SELECT * FROM kaths.tab1;
            SELECT * FROM KATHS.tab1;
            SELECT * FROM Kaths.tab1;

在兼容 ANSI 的数据库中,只有表的所有者,用户 kaths,可以发出第一个示例中的查询,其指定了一个未限定的表名,但是持有 tab1 上的 Select 特权的任何用户可以在不兼容 ANSI 的数据库中发出该查询。有关在兼容 ANSI 数据库中所有者名称的更多信息,请参阅符合 ANSI 的数据库的限制和区分大小写

CREATE ROLE 语句声明的角色是授权标识符,因而会收到所有者名称的语法限制,但是角色不能是数据库对象的所有者。同样,关键字 PUBLIC,它指定所有用户的群组,不能是数据库对象的所有者,除了在特殊的 sysdbopen( )sysdbclose( ) 过程的情况中。有关这些内置会话配置 UDR 的更多信息,请参阅会话配置过程

1 GBase 8s 扩展