序列(序列生成器)
序列或序列生成器是一个数据库对象用来取得唯一值来填充一个系列。"Sequence"是一个兼容的SQL术语,在Firebird中同样的事情,传统的被称为"generator"。在Firebird两个术语是都实现了,识别并已有这两个术语的语法。
序列(或序列生成器)总是作为64位整型存储,不考虑数据库的方言.
警告
如果一个客户端使用方言1,服务器将序列值作为32位整数发送.传送一个序列值到32位字段或变量不会产生错误只要序列的当前值没有超过32位数值的限制.然而,一旦序列值超过这个限制,数据库使用方言3时将产生一个错误。数据库使用方言1时将将保持切断的值,将危害序列的唯一性。
这个一部分描述如创建、设置和删除序列
创建序列CREATE SEQUENCE
作用:创建一个新的序列(序列生成器)
用于: DSQL, ESQL
语法:
CREATE {SEQUENCE | GENERATOR} seq_name
表 5.32. CREATE SEQUENCE | CREATE GENERATOR 语句参数
参数 | 描述 |
seq_name | 序列(序列生成器)名称,最多包含可以达31个字符. |
语句CREATE SEQUENCE和CREATE GENERATOR是代名词 — — 两者都创建一个新的序列。都可以使用,但建议使用CREATE SEQUENCE,如果符合标准的元数据管理是重要的.
当一个序列被建产时,它的值被设置为0,每次使用NEXT VALUE FOR seq_name操作符操作该序列,它的值增加 1。可以通过函数GEN_ID(seq_name, )调用来代替.依据一个不同的整数"step"产生序列 。
所有连接数据库的用户都能创建一个序列(序列生成器)。
例子:
1. 使用CREATE SEQUENCE创建 EMP_NO_GEN序列.
CREATE SEQUENCE EMP_NO_GEN;
2. 使用CREATE GENERATOR EMP_NO_GEN序列.
CREATE GENERATOR EMP_NO_GEN;
参阅: ALTER SEQUENCE, SET GENERATOR, DROP SEQUENCE (GENERATOR), NEXT VALUE FOR,
GEN_ID() function