返回首页

gbase数据、南大通用产品文档:GBase8sSERIAL(n) 数据类型

更新日期:2024年09月11日

SERIAL 数据类型存储 INT 数据类型的顺序整数(在插入新行时由数据库服务器自
动指定)。
缺省顺序起始号为 1,但可以在创建或改变表时指定初始值 n。
您可以指定正数或负数作为起始号。
如果您指定零 (0) 作为起始号,
那么使用的值是 SERIAL 列中已存在的最大正值
+ 1。
SERIAL 的最大值是 2,147,483,647。如果指定大于 2,147,483,647 的数,那么会接
收到语法错误。如果需要更大的范围,那么使用 SERIAL8 或 BIGSERIAL 数据类型,而不
是 SERIAL。
一个表只能有一个 SERIAL 列,但是它可以具有一个 SERIAL 列和一个 SERIAL8 列
或 BIGSERIAL 列。
列中的 SERIAL 值并不是自动唯一。必须对此列应用唯一索引或主键约束以防止重复
的 SERIAL 数。如果您在 DB-Access 中使用 Interactive Schema Editor 来定义该表,
那么唯一索引将自动应用于 SERIAL 列。
SERIAL 数可能不连续,原因是存在并发的用户、回滚和其他因素。
如果 column 是 SERIAL 数据类型,那么用于间接输入的 SPL 的 DEFINE variable
LIKE column 语法声明 INTEGER 数据类型的变量。

在指定了数字之后,就不能进行更改。您可以将值插入 SERIAL 列中(使用 INSERT
语句),或如果新值与列中的任何现有值都不重复,也可以重置 serial 列(使用 ALTER

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 110 -
TABLE 语句)。要将值插入到 SERIAL 列中,数据库服务器会使前面的值增加 1(如果复
位值较大的话,那么将复位值增加 1)并将结果指定为输入值。但是,如果 ALTER TABLE
已经将 SERIAL 列的下一个值复位为小于该列中已存在的值,那么下一个值将遵循以下公
式:
(SERIAL 列中的最大现有值) + 1
例如,当最大现有值为 128 时,如果将 customer.customer_num 的序号值复位为
50,那么下一个指定数将为 129。有关 SERIAL 数据条目的更多详细信息,请参阅 GBase
8s SQL 指南:语法。
SERIAL 列可以存储唯一代码,例如,订单、发票或客户编号。SERIAL 数据值需要 4
个字节的存储空间,并且具有与 INTEGER 数据类型相同的精度。有关将唯一整数指定给
数据库表中每一行的其他方法的详细信息,请参阅 GBase 8s SQL 指南:语法 中的
CREATE SEQUENCE 语句。

array_typanalyze
range_typanalyze
ts_typanalyze
local_rto_stat

功能说明
使用游标的目的是为了取得游标定义中的SELECT 语句所返回的结果集中的字段
的值,
在GBase 8a MPP Cluster 中,
这一取值的过程也是通过FETCH 语句实现的。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1373
语法格式
FETCH cursor_name INTO var_name [, var_name] ...
表5- 182 参数说明
参数名称


cursor_name
前面定义的游标的名称,需要从该游标中取得返回值。
var_name
局部变量名,从游标中取得的值要保存在这些局部变量中,
FETCH 语句中要求局部变量的数量与游标定义语句中
SELECT 语句中的选择列表中的字段数量相同,且数据类型
也要对应相同或者可以进行自动转换,这些局部变量会在后
续的语句中进行处理。
示例
以下代码是包含在游标代码块中的。
DECLARE s_region CHAR(16);
DECLARE region INT;
DECLARE cur CURSOR FOR SELECT DISTINCT c_region,1 FROM
ssbm.customer
ORDER BY c_region LIMIT 1000;
OPEN cur;
FETCH cur INTO s_region, region; //