所有者名称指定数据库对象的所有者。当您在语法图表中引用所有者名称时使用本段。
元素 | 描述 | 限制 | 语法 |
---|---|---|---|
owner | 数据库中对象所有者的用户名 | 最大长度为 32 个字节 | 必须遵守操作系统的规则。 |
在兼容 ANSI 的数据库中,必须指定您不拥有的数据库对象的所有者。在对数据库对象的引用中,所有者名称的 ANSI/ISO 同义词时授权标识符。(然而,在对模式对象的引用中, GBase 8s 文档调用的所有者名称的 ANSI/ISO 术语是模式名称。)
在不兼容 ANSI 的数据库中,所有者名称是可选的。当创建数据库对象或用户数据范围语句时,您不需要指定所有者。如果在创建数据库对象时不指定所有者,那么在大多数情况下,数据库服务器将您的登录名指定为对象的所有者。 有关此规则的例外,请参阅 CREATE FUNCTION 语句描述中的已创建数据库对象的所有权和 CREATE PROCEDURE 语句描述中的创建数据库对象的所有权。当在所有者特权 UDR 中的 DDL 语句创建一个新的数据库对象时,例程的所有者(而非执行它的用户,如果此用户不是例程的所有者)成为新数据库对象的所有者。
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 的更多信息,请参阅会话配置过程。