SELECT * FROM systables WHERE tabname = 'tab1' AND owner = 'kaths'; SELECT * FROM systables WHERE tabname = 'tab1' AND owner = 'Kaths';
SELECT * FROM "gbasedbt".systables WHERE tabname = 'tab1' AND owner = 'Kaths';
相反, GBase 8s 将 gbasedbt 的名称视为一种特殊情况,并且在指定 gbasedbt 时保留小写字母,带或不带分隔符,无论数据库是否符合 ANSI。但是,要编写可移植到非 GBase 8s 数据库服务器的 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.t1(i SERIAL NOT NULL);
该语句失败,因为所有者名称和表名称的组合不是唯一的,如果之前注册的 gbasedbt 用户拥有的表已经在数据库中存在。