SELECT * FROM systables WHERE tabname = 'tab1' AND owner = 'kaths'; SELECT * FROM systables WHERE tabname = 'tab1' AND owner = 'Kaths';
SELECT * FROM "informix".systables WHERE tabname = 'tab1' AND owner = 'Kaths';
相反, GBase 8t 将 informix 的名称视为一种特殊情况,并且在指定 informix 时保留小写字母,带或不带分隔符,无论数据库是否符合 ANSI。但是,要编写可移植到非 GBase 8t 数据库服务器的 SQL 代码,应始终使用双引号(" )将数据库对象的所有者名称分隔开。
CREATE TABLE informix.t1(i SERIAL NOT NULL); CREATE TABLE someone.t1(i SERIAL NOT NULL);
如果这些语句成功执行,第一个表将在 systables 中注册的 informix 作为所有者,第二个表将 SOMEONE 注册为所有者。当所有者的指定字母大小写,但所有者名称未限定时,字母大小写无关紧要,因为 GBase 8t 将未分隔的所有者名称变成大写,但将未定界的 informix (或 INFORMIX)所有者名称变为小写的 informix。
CREATE TABLE INFORMIX.t1(i SERIAL NOT NULL);
该语句失败,因为所有者名称和表名称的组合不是唯一的,如果之前注册的 informix 用户拥有的表已经在数据库中存在。