序列号
项⽬
2023/04/19
9 个参与者
反馈
本文内容 使⽤序列 限制 典型⽤法 管理序列 显⽰另外 2 个
适⽤于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
序列是⼀种⽤户定义的架构绑定对象,它根据创建该序列时采⽤的规范⽣成⼀组数值。 这组数值
以定义的间隔按升序或降序⽣成,并且可根据要求循环(重复)。 序列不与表相关联,这⼀点与
标识列不同。 应⽤程序将引⽤某⼀序列对象以便接收其下⼀个值。 序列与表之间的关系由应⽤
程序控制。 ⽤户应⽤程序可以引⽤某⼀序列对象并且跨多⾏和表协调值键。
序列是通过使⽤ CREATE SEQUENCE 语句独立于表来创建的。 其选项使您可以控制增量、最⼤值
和最⼩值、起始点、⾃动重新开始功能和缓存以便改进性能。 有关这些选项的信息,请参阅
CREATE SEQUENCE 。
与在插入⾏时⽣成的标识列值不同,应⽤程序可以通过调⽤ NEXT VALUE FOR 函数在插入⾏之前
获取下⼀序列号。 在调⽤ NEXT VALUE FOR 时分配该序列号,即使在该序列号永远也不插入某个
表中时也是如此。 此 NEXT VALUE FOR 函数可⽤作表定义中某个列的默认值。 使⽤
sp_sequence_get_range 可⼀次获取某个范围的多个序列号。
序列可定义为任何整数数据类型。 如果未指定数据类型,则序列将默认为 bigint。
使⽤序列
在以下情况下将使⽤序列,⽽非标识列:
应⽤程序要求在插入到表中之前有⼀个数值。
应⽤程序要求在多个表之间或者某个表内的多个列之间共享单个数值系列。
在达到指定的数值时,应⽤程序必须重新开始该数值系列。 例如,在分配值 1 到 10 后,应
⽤程序再次开始分配值 1 到 10。
应⽤程序要求序列值按其他字段排序。 NEXT VALUE FOR 函数可以将 OVER ⼦句应⽤于该函数
调⽤。 OVER ⼦句确保返回的值按照 OVER ⼦句的 ORDER BY ⼦句的顺序⽣成。
应⽤程序要求同时分配多个数值。 例如,应⽤程序需要保留五个序列号。 如果正在同时向
其他进程发出数值,则请求标识值可能会导致在系列中出现间断。 调⽤
sp_sequence_get_range 可以⼀次检索该序列中的若⼲数值。
您需要更改序列的规范,例如增量值。
评论