返回首页

gbase数据、南大通用产品文档:GBase8s主体标记管理

更新日期:2024年09月11日

在GBase8s 安全数据库系统中,主体即为数据库用户。

DELIMIDENT 环境变量指定括在双引号 ( " ) 之间的字符串是定界数据库标识。
DELIMIDENT 环境变量在客户机系统上也是受支持的,在客户机系统中它可以设置为
y、n 或不设置。

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 167 -
y 指定客户机应用程序必须使用单引号 ( ' ) 来对字符串定界,且必须仅在定界
的 SQL 标识(它可以支持比未定界的标识中有效的字符集更大的字符集)的两边使
用双引号 ( " )。定界字符串或定界标识中的字母是区分大小写的。这是 OLE DB
和 .NET 的缺省值。
n 指定客户机应用程序可以使用双引号 ( " ) 或单引号 ( ' ) 来对字符串定界,但
是不对 SQL 标识定界。如果数据库服务器在需要 SQL 标识的上下文中遇到用双引
号或单引号定界的字符串,将发出错误。符合 SQL 标识条件的所有者名称可以用单
引号 ( ' ) 来定界。 必须使用一对相同的引号来对字符串定界。
这是 ESQL/C、JDBC 和 ODBC 的缺省值。具有 ESQL/C 作为底层的 API(如
GBase 8s 4GL、DataBlade® API (LIBDMI) 和 C++ API)具有与 ESQL/C 相同的行
为,并使用“n”作为缺省值(如果在客户机系统上没有指定 DELIMIDENT 的值)。
在客户机系统上指定没有值的 DELIMIDENT 环境变量要求客户机应用程序使用
DELIMIDENT 设置,这是应用程序编程接口 (API) 的缺省设置。

不需要任何值;DELIMIDENT 生效(如果它存在的话),且当它在环境变量列表上
时仍然有效。当 DELIMIDENT 在服务器级别设置时,除去此变量需要重新启动服务器。
定界标识可以包含空格(如短语 "Vitamin E"),也可以与 SQL 关键字完全相同
(如 "TABLE" 或 "USAGE")。还可使用定界标识来声明包含 SQL 标识的缺省字符集
之外的字符的数据库标识(如“Column #6”)。在缺省语言环境中,此缺省字符集由字
母、数字和下划线 ( _ ) 符号组成。
即使设置了 DELIMIDENT,您也可以使用单引号 ( ' ) 来将权限标识定界为数据库对
象名称的所有者名称部分,如以下示例所示:
RENAME COLUMN 'Owner'.table2.collum3 TO column3;
此示例是一般规则的例外,一般规则是这样的:当设置了 DELIMIDENT 时,SQL 解析
器将以单引号定界的字符串解释为文字串,而将以双引号 ( " ) 定界的字符串解释为
SQL 标识。
数据库标识符(也称为 SQL 标识符)是数据库对象(例如:表和列)的名称。存储
器标识是存储器对象(例如,数据库空间、Blob 空间和智能大对象空间)的名称。不能
使用 DELIMIDENT 来声明包含缺省 SQL 字符集以外字符的存储器标识。
定界标识是区分大小写的。要使用定界标识,用 GBase 8s ESQL/C 编写的应用程序
必须在编译时和运行时设置 DELIMIDENT。
重要: 如果尚未设置 DELIMIDENT,应注意对它进行设置可能会导致在定界 SQL 标
识(例如,字符串文字的定界符)之外的上下文中使用双引号 ( " ) 的现有 .sql 脚本

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 168 -
或客户机应用程序出错。如果设置了 DELIMIDENT,那么必须对不是 SQL 标识的定界构造
使用单引号 ( ' ) 而不是双引号。
在使用 C shell 并已设置了 DELIMIDENT 的 UNIX™ 系统上,可通过以下命令禁用此
功能(它会导致双引号之间的任何内容都解释为 SQL 标识):
unsetenv DELIMIDENT

在GBase 8s 中,每个数据库用户都有一个不可重复的唯一性用户标识,并
在DBMS 的整个生命周期实现该用户标识的唯一性。