Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
创建一个序列,可用于生成在多个表间唯一的主键值,也可用于生成表的缺省值。
CREATE [ OR REPLACE ] SEQUENCE [ owner.] sequence-name [ INCREMENT BY signed-integer ] [ START WITH signed-integer ] [ MINVALUE signed-integer | NO MINVALUE ] [ MAXVALUE signed-integer | NO MAXVALUE ] [ CACHE integer | NO CACHE ] [ CYCLE | NO CYCLE ]
OR REPLACE 子句 指定 OR REPLACE 将创建一个新序列或替换同名的现有序列。如果未使用 OR REPLACE 子句,则返回错误(如果指定的序列名称对当前用户已存在)。
INCREMENT BY 子句 定义下一个序列值从上一个指定值递增的量。缺省值为 1。指定负值生成降序序列。如果 INCREMENT BY 值为 0,则返回错误。
START WITH 子句 定义起始序列值。如果未指定 START WITH 子句的值,则升序序列使用 MINVALUE,降序序列使用 MAXVALUE。如果 START WITH 值超出由 MINVALUE 或 MAXVALUE 指定的范围,则返回错误。
MINVALUE 子句 定义由序列生成的最小值。缺省值为 1。如果 MINVALUE 大于 (2^63-1) 或小于 -(2^63-1),则返回错误。而且 MINVALUE 大于 MAXVALUE 时也会返回错误。
MAXVALUE 子句 定义由序列生成的最大值。缺省值为 2^63-1。如果 MAXVALUE 大于 2^63-1 或小于 -(2^63-1),则返回错误。
CACHE 子句 指定为加快访问速度而保存在内存中的预分配序列值的数量。高速缓存用尽后,将重新填充序列高速缓存,并将相应的条目写入事务日志。到检查点时,将高速缓存的当前值转发到 ISYSSEQUENCE 系统表。缺省值为 100。
CYCLE 子句 指定达到最大值或最小值后是否应继续生成值。
缺省值为 NO CYCLE,即到达最大值或最小值后返回错误。
序列是允许自动生成数字值的数据库对象。序列不绑定到特定表列或唯一表列,只能通过序列所应用到的表列进行访问。
序列可通过以下方式之一生成值:
使用 CYCLE 子句来控制序列何时用尽值的行为。
在序列递增并超过 MAXVALUE 的情况下,如果指定了 CYCLE,则将 MINVALUE 用作下一个序列值。在序列递减并下降到 MINVALUE 以下的情况下,如果指定 CYCLE,则将 MAXVALUE 用作下一个序列值。如果未指定 CYCLE,则返回错误。
序列值不能与视图或实例化视图定义一起使用。
必须具有 CREATE ANY SEQUENCE 或 CREATE ANY OBJECT 系统特权才能创建序列。
无
SQL/2008 序列构成 SQL/2008 语言功能 T176。SQL Anywhere 不允许选择指定序列数据类型—此行为可在使用序列时使用 CAST 来实现。
此外,以下几项为服务商扩充:
以下示例创建名为 Test 的序列,此序列从 4 开始,按 2 递增,不循环,一次性高速缓存 15 个值:
CREATE SEQUENCE Test START WITH 4 INCREMENT BY 2 NO MAXVALUE NO CYCLE CACHE 15;