返回首页

gbase数据、南大通用产品文档:GBase8sdistinct 数据类型

更新日期:2024年09月11日

distinct 类型可映射至底层的基础类型或映射至用户定义的 Java™ 对象。例如,distinct 类
型 INT 可映射至 int 或映射至封装该数据表示的 Java 对象。此 Java 对象必须实
现 java.sql.SQLData 接口。必须提供如 映射数据类型 中所描述的定制类型映射,来将此
Java 对象映射至对应的 SQL 类型名称。


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 341
使用 CREATE SEQUENCE 语句创建从多个用户生成唯一整数的序列数据库对
象。
该语句是 SQL ANSI/ISO 标准的扩展。
语法

元素
描述
限制
语法
max
值的上限
必须为整数 > origin
精确数值
min
值的下限
必须是小于 origin 的
整数
精确数值
origin
序列中的第一个数字 必须是在 INT8 或
BIGINT 范围内的整数
精确数值
owner
sequence 的所有者 必须是权限标识符
所有者名称

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 342
元素
描述
限制
语法
sequence 在这里为新的序列声
明的名称
必须在序列、顺序、视
图和同义词名称中是唯
一的
标识符
size
内存中预分配的值的
数目
整数 > 1,但 < 周期
(= |(max -
min)/step|) 的基数
精确数值
step
连续值间的时间间隔 INT 范围内的非零整数
精确数值
用法
序列(有时称为系列生成器 或 序列对象)返回一系列单调升序或单调降序的唯
一整数,一次返回一个。 CREATE SEQUENCE 语句定义新的序列对象,声明其
标识符并在 syssequences 系统目录表中注册此对象。
序列已授权的用户可以通过在 DML 语句中包含 sequence.NEXTVAL 表达式来
请求新的值。sequence.CURRVAL 表达式返回指定 sequence 的当前值。
NEXTVAL 和 CURRVAL 表达式只在 SELECT 、DELETE 、INSERT 和
UPDATE 语句中有效;如果尝试在其它上下文中调用内置的 NEXTVAL 或
CURRVAL 函数, GBase 8s 将返回一个错误。
生成的值在逻辑上类似 BIGSERIAL 或 SERIAL8 数据类型,但在该序列内是唯
一的。因为数据库服务器生成这些值,所以多个序列能比一个序列列支持更高级
别的并发性。这些值独立于事务;即使生成值的事务失败,生成的值也不能回
滚。
可以使用序列自动生成主键值(为许多表使用一个序列),或者每个表都可以有
子句的序列。
CREATE SEQUENCE 可以指定序列的以下特征:

初始值

值间增量的大小和符号

最大和最小值

序列在达到其限制后是否回收值

在内存中预先分配了多少值用于快速存取

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 343
数据库可以同时支持多个序列,但是在表、临时表、视图、同义词和序列的名称
中当前数据库内序列的名称(或在兼容 ANSI 的数据库中,owner.sequence 组
合)必须是唯一的。
如果包含对立选项(如同时指定 MINVALUE 和 NOMINVALUE 选项或同时指
定 CACHE 和 NOCACHE),则会发生错误。
如果您包含可选 IF NOT EXISTS 关键字,则当指定名称的序列对象已经在当前
数据库中注册时,或者指定的名称是当前数据库中的表、视图或同义词的标识符
时,数据库服务器不采取操作(而非向应用程序发送异常)。
示例
以下示例创建了序列,将序列中的值插入到表,并从该表查询了这些行和列。
CREATE SEQUENCE seq_2
INCREMENT BY 1 START WITH 1
MAXVALUE 30 MINVALUE 0
NOCYCLE CACHE 10 ORDER;

CREATE TABLE tab1 (col1 int, col2 int);
INSERT INTO tab1 VALUES (0, 0);

INSERT INTO tab1 (col1, col2) VALUES (seq_2.NEXTVAL,
seq_2.NEXTVAL)

SELECT * FROM tab1;

col1 col2

0 0
1 1
INCREMENT BY 选项
使用 INCREMENT BY 选项指定序列中连续数字间的间隔。BY 关键字是可选
的。间隔或 step 值可以是 INT8 范围内的正整数(对于升序序列 )或者负整数
(对于降序序列)。如果您不指定任何 step 值,则连续生成值之间的缺省间隔为
1 ,且序列为升序序列。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 344
START WITH 选项
使用 START WITH 选项指定序列的第一个数字,如果 CREATE SEQUENCE 语
句中指定了 min 或 max ,则此 origin 值必须是 INT8 范围内大于或等于 min
值(对于升序序列)或者小于等于 max 值(对于降序序列)的整数。WITH 关
键字是可选的。
如果您未指定 origin 值,则缺省初始值为 min (对于升序序列)或者 max (对
于降序序列)。(以下MAXVALUE 或 NOMAXVALUE 选项 和 MINVALUE
或 NOMINVALUE 选项 两节分别描述 max 和 min 规范。)
MAXVALUE 或 NOMAXVALUE 选项
使用 MAXVALUE 选项指定序列中值的上限。最大值或 max ,必须是 INT8 范
围内大于 origin 的值的整数。
如果未指定 max 值,则缺省值为 NOMAXVALUE 。此缺省设置支持小于或等
于 2e64 的值(对于升序序列)或者小于或等于 -1 (对于降序序列)。
MINVALUE 或 NOMINVALUE 选项
使用 MINVALUE 选项定序列中值的下限。最小值或 min 必须是 INT8 范围内
小 origin 的值的整数。
如果未指定 min 值,则缺省值为 NOMINVALUE 。此缺省设置支持大于或等于
1 (对于升序序列)或者大于或等于 -(2e64) (对于降序序列)。
CYCLE 或 NOCYCLE 选项
使用 CYCLE 选项在序列达到最大值(升序)或最小值(降序)限制后继续生成
序列。在升序序列达到 max 值,它为下一个序列值生成 min 值。在降序序列达
到 min 值后,它为下一个序列生成 max 值。
缺省值为 NOCYCLE 。在此缺省设置,序列无法在达到声明的限制后生成更多的
值。一旦序列达到该限制,sequence.NEXTVAL 的下一引用返回一个错误。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 345
CACHE 或 NOCACHE 选项
使用 CACHE 选项指定预先分配在内存中用于快速存取的序列值数。此功能可增
强大量使用的序列的性能。
高速缓存 size 必须是 INT 范围内的正整数。如果指定 CYCLE 选项,则 size
必须小于周期(或小 |(max - min)/step| )中的值数。最小值为 2 个预先分配的
值,缺省为 20 个预先分配的值。
NOCACHE 关键字指定没有为此序列对象在内存中预先分配生成的值(即,
零)。
配置参数 SEQ_CACHE_SIZE 指定可以在序列高速缓存中有预先分配的值的序列
对象的最大数。如果没有设置此配置参数,则缺省情况下可用 CACHE 选项定义
10 个以下的不同序列对象。
ORDER 或 NOORDER 选项
这些关键字对序列的行为没有影响。序列始终以用户请求的顺序向用户发出值,
似乎 ORDER 关键字是始终指定的。ORDER 和 NOORDER 关键字由 CREATE
SEQUENCE 语句接受以与其它 SQL 方言的序列对象的实现相兼容。

本版本修复了以下问题:
RM #10:执行“INSERT INTO table SELECT FIRST number DISINCT columns”语句返
回非预期的结果。
RM #129:捕捉 143 错误时数据库暂挂,不可使用。
RM #195:某个数据库安全漏洞。
RM #213:由于 CM 虚拟内存溢出导致数据库无法启动。
RM #269:由于 SDS 节点异常导致主节点写入阻塞。
RM #292:建立视图的语句中包含多个 UNION ALL 时,数据库内 存溢出从而
宕机。
RM #329:数据库配置的字符集为 GB18030-2000 时,使用 Arcgis 连接数据
库报错的问题。
RM #333:视图中无法使用 Rowid。
RM #364:字符集为 GB18030-2000 的数据库返回的报错信息不支 持中文。
RM #373:多次 Merge 操作导致数据库宕机。
RM #378:当数据库的字符集环境为 GB18030-2000 时,
不支持创建 Java UDR。

RM #390:在给表和字段添加注释时,操作已执行成功,但仍报以下错误-“未
知错误消息”。
RM #396:WHERE 条件中包含 IN 查询时执行速度较慢。
RM #439:SDS 集群环境中执行 dbexport 导出操作时报语法错。
RM #395:某条 SQL 在 SDS 和 RSS 上执行时,返回错误229-140。
RM #409:在SELECT 语句的 WHERE 子句的 IN 条件子查询中不支持使用
ORDER BY 排序。
RM #412:JDBC 连接 CM 层时速度较慢。
RM #439:在某种情况下执行 dbexport 导出数据库报语法错误。