什么是SQL Server等效的Oracle Sequence.nextval

时间:2014-08-05 06:50:11

标签: sql-server

问题:我现在有Maximo Schema的SQL Server数据库。 (之前我曾与Oracle数据库合作过)。 Oracle Sequence.Nextval的SQL Server等价物是什么?如果有人可以帮助我。

在插入具有唯一ID(tkstatusid)的记录时,我们尝试了MAX(ID)+1但它有机会进行复制。我相信,与Oracle中的sequence.nextval类似,SQL Server中会有一个位置,其中保存下一个数字或最后一个数字。

6 个答案:

答案 0 :(得分:3)

创建一个这样的序列

Address address = form.getPerson().getAddress();
address.setStreet("foo");
this.someMethodCall(form);
// The following assertion may be false
Assert.assertEquals(address.getStreet(), form.getPerson().getAddress().getStreet());
// As well as the following, since the method call has the form instance, so that it could change the address or even the person.
Assert.assertEquals(address, form.getPerson().getAddress());

然后您可以在Insert语句中使用序列,如下所示

CREATE SEQUENCE Schema.SequenceName
AS int
INCREMENT BY 1 ;

答案 1 :(得分:0)

在MS SQL中它的SCOPE_IDENTITY(),如果你想获得最后一次插入的auto-id

INSERT INTO MyTable(ValueField) VALUES('New Value'); 
SELECT SCOPE_IDENTITY() AS MyNewIdNumber; 

http://msdn.microsoft.com/de-de/library/ms190315.aspx

答案 2 :(得分:0)

0如果您使用sequence,则ORACLESQL SERVER都支持SCOPE_IDENTITY()。否则,您可以将inserted id用于上一个SEQUENCE。使用SCOPE_IDENTITY.而不是{{1}}

是更好的选择

答案 3 :(得分:0)

您应该将SQL Server版本升级到2012或更高版本。 您可以在下面的链接中查看有关它的完整信息:

create sequence in sql server

答案 4 :(得分:-1)

使用max (ISNULL(field_value,0)) + 1

答案 5 :(得分:-1)

SELECT max(ISNULL(xx.xx.xxxxxxxx.id,0)) + 1 FROM xx.xx.xxxxxxxx)