序列是由用户定义的绑定到架构的对象。序列依据定义的间隔按升序或降序生成,并可配置为用尽时重新启动(循环)。序列不与特定表关联。序列与表之间的关系由应用程序进行控制。
创建序列的语法:
CREATE SEQUENCE [schema_name . ] sequence_name
[ AS [ built_in_integer_type | user-defined_integer_type ] ]
[ START WITH <constant> ]
[ INCREMENT BY <constant> ]
[ { MINVALUE [ <constant> ] } | { NO MINVALUE } ]
[ { MAXVALUE [ <constant> ] } | { NO MAXVALUE } ]
[ CYCLE | { NO CYCLE } ]
[ { CACHE [ <constant> ] } | { NO CACHE } ]
[ ; ]
序列可定义为任何整数类型,若未提供任何类型,则将bingint数据类型作为默认类型。
START WITH <常量>
序列的起始值
INCREMENT BY <常量>
如果为负数则递减,否则递增。不能为0
[ MINVALUE <常量> | NO MINVALUE ]
指定序列对象的边界。 新序列对象的默认最小值是序列对象的数据类型的最小值。
[ MAXVALUE <常量> | NO MAXVALUE
指定序列对象的边界。 新序列对象的默认最大值是序列对象的数据类型的最大值。
[ CYCLE | NO CYCLE ]
此属性指定当超过序列对象的最小值或最大值时,序列对象是应从最小值(对于降序序列对象,则为最大值)重新开始,还是应引发异常。 新序列对象的默认循环选项是 NO CYCLE。
[ CACHE [<常量> ] | NO CACHE ]
通过最大限度地减少生成序列编号所需的磁盘 IO 数,可以提高使用序列对象的应用程序的性能。设置缓存后,在第一获取序列后,在服务器的缓存中缓存当前序号和设置的缓存值(缓存个数*增量)。这样以后再次请求时,除非要获取的序号大于缓存值,才将缓存值更新到磁盘中的系统表。
可以使用NEXT VALUE FOR查询序列获得生成的序列号
sys.sequences
视图可以查看序列信息;也可以使用可视化的方式如下: