问题:我现在有Maximo Schema的SQL Server数据库。 (之前我曾与Oracle数据库合作过)。 Oracle Sequence.Nextval的SQL Server等价物是什么?如果有人可以帮助我。
在插入具有唯一ID(tkstatusid)的记录时,我们尝试了MAX(ID)+1但它有机会进行复制。我相信,与Oracle中的sequence.nextval类似,SQL Server中会有一个位置,其中保存下一个数字或最后一个数字。
答案 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;
答案 2 :(得分:0)
0如果您使用sequence
,则ORACLE
和SQL SERVER
都支持SCOPE_IDENTITY()
。否则,您可以将inserted id
用于上一个SEQUENCE
。使用SCOPE_IDENTITY.
而不是{{1}}
答案 3 :(得分:0)
您应该将SQL Server版本升级到2012或更高版本。 您可以在下面的链接中查看有关它的完整信息:
答案 4 :(得分:-1)
使用max (ISNULL(field_value,0)) + 1
答案 5 :(得分:-1)
SELECT max(ISNULL(xx.xx.xxxxxxxx.id,0)) + 1 FROM xx.xx.xxxxxxxx)