SQL Server 2012 推出Sequence
作为一项新功能,与 Oracle 和 Postgres 中的相同。在哪些情况下序列优先于身份?为什么我们需要序列?
我想你会找到你的答案here
使用列的标识属性,您可以轻松生成
自动递增数字(通常用作主键)。和
序列,它将是一个不同的对象,您可以将其附加到
插入时的表列。与身份不同的是,下一个数字是
列值将从内存而不是从磁盘检索 –
这使得序列比身份快得多。我们会看到
这在接下来的例子中。
And here:
序列:SQL Server 社区已请求序列
多年来,它包含在这个版本中。序列是一个用户
生成数字序列的定义对象。这是一个
使用序列的示例。
and here还有:
SQL Server 序列对象生成数字序列,就像
SQL 表中的标识列。但顺序的好处
numbers为序列号对象,不限制单条sql
桌子。
在 msdn 上,您还可以阅读有关用法以及为什么我们需要它的更多信息(here):
序列是用户定义的模式绑定对象,它生成
根据规范的数值序列
序列已创建。生成数值序列
以定义的间隔按升序或降序排列,并且可以
按要求循环(重复)。与标识列不同,序列是
不与表关联。一个应用程序引用一个序列对象
接收其下一个值。序列和之间的关系
表由应用程序控制。用户应用程序可以
引用序列对象并协调值键
多行和表。
使用 CREATE 独立于表创建序列
序列语句。选项使您能够控制增量,
最大最小值、起点、自动重启
能力和缓存以提高性能。有关信息
选项,请参阅创建序列。
与标识列值不同,标识列值是在行生成时生成的
插入后,应用程序可以获得之前的下一个序列号
通过调用 NEXT VALUE FOR 函数插入行。序列
调用 NEXT VALUE FOR 时分配号码,即使该号码
永远不会插入到表中。 NEXT VALUE FOR 函数可以是
用作表定义中列的默认值。使用
sp_sequence_get_range 获取多个序列号的范围
一次。
序列可以定义为任何整数数据类型。如果数据类型
未指定时,序列默认为 bigint。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)