返回首页

gbase数据、南大通用产品文档:GBase8sCREATE SEQUENCE 语句

更新日期:2024年09月11日


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 方言的序列对象的实现相兼容。

node (192.168.146.42)
backup table begin

功能说明
在创建或修改表时,对表中的一列或多列进行数据压缩的定义。方便用户进行单
独设置。