在早期版本的 Microsoft SQL Server 数据库中,我们通常使用 IDENTITY 特性作为标识符,但从 MS SQL Server 2012 版本之后,我们可以使用一新的特性来取代 IDENTITY 标识符,这就是数据库中的“序列”或称“序列号”(Sequence)。
序列相比较于 IDENTITY 具有几个明显的特点:
- 独立于表,由数据库层面统一管理
- 缓存更具效率,也能够不启用缓存
- 能够循环使用,自动重复值
得益于其独立于表的特点,我们就可以在同一张表中使用多个标识符列;循环使用的意思是,比如序列达到了临界点的最大值,下一次再取值时会自动重置到起始最小值;我们当然也能够手动重置并明确指定下一个取值。
序列的使用也简单,我们可以直接通过 SQL Server Management 可视化界面创建或修改序列,位置在某数据库的“可编程性”里:

假设我们创建了一个名为“Sequence1”的序列对象:

除此之外,我们还可以通过 SQL 代码进行同样的操作,比如重置序列号为 5:
ALTER SEQUENCE Sequence1 RESTART WITH 5
详情参见微软官方的文档:文档链接点此。
序列创建完成后,我们可以使用 NEXT VALUE FOR 语句取得该序列的下一个值,比如: