sqlserver中的序列

序列是由用户定义的绑定到架构的对象。序列依据定义的间隔按升序或降序生成,并可配置为用尽时重新启动(循环)。序列不与特定表关联。序列与表之间的关系由应用程序进行控制。

创建序列的语法:

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视图可以查看序列信息;也可以使用可视化的方式如下:

posted @ 2015-07-31 16:28  senki  阅读(2622)  评论(0编辑  收藏  举报