【发布时间】:2012-01-23 09:33:15
【问题描述】:
有没有办法在 SQL Server 中创建唯一的序列号
select <sequence>.nextval from dual
我们有上面的 Oracle 代码,它将创建一个唯一的号码,并且该号码不能被任何其他人使用。
同理,如何在 SQL Server 中创建唯一的序列号????
有人帮我解决这个问题
【问题讨论】:
标签: sql-server oracle unique-id
有没有办法在 SQL Server 中创建唯一的序列号
select <sequence>.nextval from dual
我们有上面的 Oracle 代码,它将创建一个唯一的号码,并且该号码不能被任何其他人使用。
同理,如何在 SQL Server 中创建唯一的序列号????
有人帮我解决这个问题
【问题讨论】:
标签: sql-server oracle unique-id
在 SQL Server 2012 中添加了序列 - 但这还没有完全发布。如果您想提前试用,产品的候选发布版本中包含它们。
如果序列只被单个表使用,那么您可以使用标识列功能,它允许您指定起始编号和每条记录添加的值。
如果您正在寻找一个可以跨多个表使用的序列,您需要在 SQL Server 中创建一个专用表,该表具有一个标识字段的单列 - 并且只要您需要 .nextval,您将在表中插入一行以获得一个新数字。该表就像一个序列。表会随着时间的推移而填满,不需要在表中保留记录,身份存储它的当前值和增量以获得系统表上的下一个值。
【讨论】:
只有即将推出的 SQL Server 2012 支持符合 sql 标准的序列对象。 :-( 在任何当前版本的 SQL Server(2008 R2 及更低版本)中,您必须使用具有标识约束的列,如下所示:
CREATE TABLE t1
(
id int identity(1,1),
somecol varchar(50)
);
这将在 id 列中生成从 1 开始并以 1 为增量递增的值。
【讨论】: