引用 gbasedbt 用户拥有的表

如果使用所有者名称作为从一个系统目录表访问数据库对象信息的选择条件,则所有者名称是区分大小写的。要保留字母大小写,必须将所有者用单引号或双引号括起来,并且必须完全按照其存储在系统目录表中的方式键入所有者名称。在以下两个示例中,只有第二个成功访问表 Kaths.table1 上的信息。
SELECT * FROM systables WHERE tabname = 'tab1' AND owner = 'kaths';
        SELECT * FROM systables WHERE tabname = 'tab1' AND owner = 'Kaths';
用户 gbasedbt 是系统目录表的所有者。并且当 SQL 语句引用系统目录时,在兼容 ANSI 的数据库中必须指定 gbasedbt 作为限定符,除非您是用户 gbasedbt
SELECT * FROM "gbasedbt".systables WHERE tabname = 'tab1' AND owner = 'Kaths';
GBase 8s 接受以下任何符号,以指定符合 ANSI 的数据库的系统目录表: 然而,在这三种格式中,只有第一种,其中所有者被指定为定界标识符,可以与大多数其它数据库服务器直接交互。对于不带分隔符的格式,SQL 的 ANSI/ISO 标准将小写字母升级为 GBASEDBT,同一标准不支持单引号(')作为所有者名称或模式名称的有效分隔符。

相反, GBase 8s gbasedbt 的名称视为一种特殊情况,并且在指定 gbasedbt 时保留小写字母,带或不带分隔符,无论数据库是否符合 ANSI。但是,要编写可移植到非 GBase 8s 数据库服务器的 SQL 代码,应始终使用双引号(" )将数据库对象的所有者名称分隔开。

以下 SQL 示例使用未定界的所有者名称:
CREATE TABLE gbasedbt.t1(i SERIAL NOT NULL);
      CREATE TABLE someone.t1(i SERIAL NOT NULL);

如果这些语句成功执行,第一个表将在 systables 中注册的 gbasedbt 作为所有者,第二个表将 SOMEONE 注册为所有者。当所有者的指定字母大小写,但所有者名称未限定时,字母大小写无关紧要,因为 GBase 8s 将未分隔的所有者名称变成大写,但将未定界的 gbasedbt (或 GBASEDBT)所有者名称变为小写的 gbasedbt

例如,假设之前两个 CREATE TABLE 语句成功执行后,用户 gbasedbt 发出下列语句:
CREATE TABLE GBASEDBT.t1(i SERIAL NOT NULL);

该语句失败,因为所有者名称和名称的组合不是唯一的,如果之前注册的 gbasedbt 用户拥有的表已经在数据库中存在。

提示: USER 操作符返回当前用户在系统上存储的登录名。如果所有者名称与登录名不同(例如,混合大小写所有者名称和全小写登录名),则 owner = USER 语法失败。