替换为SQL Server中Oracle的双重选择<sequence> .nextval?</sequence>

时间:2012-01-23 09:33:16

标签: sql-server oracle unique-id

有没有办法在SQL Server中创建一个唯一的序列

select <sequence>.nextval from dual

我们有上面的Oracle代码,它将创建一个唯一的号码,而且这个号码不能被任何其他号码使用。

以同样的方式,如何在SQL Server ????

中创建唯一的序列号

有人帮助我

2 个答案:

答案 0 :(得分:1)

SQL Server 2012中正在添加序列 - 但目前还没有完全发布。如果你想提前试用它们,产品的发布候选者会有它们。

如果序列仅由单个表使用,则可以使用标识列功能,该功能允许您指定起始编号和每个记录添加的值。

如果您正在寻找可以在多个表中使用的序列,则需要在SQL Server中创建一个专用表,该表具有一个标识字段列 - 并且只要您想要.nextval,你会在表格中插入一行来获得一个新的数字。表比行为更像一个序列。该表将随着时间的推移而填满,不需要在表中保留记录,标识存储它的当前值和增量以获得系统表上的下一个值。

答案 1 :(得分:0)

只有即将推出的SQL Server 2012支持sql标准符合序列对象。 :-(在任何当前版本的SQL Server(2008 R2及以下版本)中,您必须使用具有身份约束的列,如下所示:

CREATE TABLE t1
(
   id       int identity(1,1),
   somecol  varchar(50)
);

这将在id列中生成以1开头的值,并以1为步长递增。