如何显式增加和返回标识列的值

时间:2014-05-26 11:17:50

标签: sql sql-server-2012

使用Microsoft SQL Server 2012,我必须获取identity列的下一个ID,将其设置为其他表并返回。

这就是我认为可以做到的:

declare @NeededID as bigint

select @NeededID = IDENT_INCR('Table1')

update Table2 
set NeededID = @NeededID 
where ID = @SomeID

return @NeededID 

但是当我尝试这个时,@NeededID总是一样的,我希望它会增加。

更具体一点,我想获得表的Identity列的nextval(Oracle)。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

好的,既然你终于开始给我们一些你实际想要完成的任务了,为什么不试试呢:

  1. Table1
  2. 中插入新行
  3. 使用SCOPE_IDENTITY获取ID并将其插入Table2
  4. Table1
  5. 删除行

    您已经掌握了差距,并且您已获得了正确的身份价值。

答案 1 :(得分:-2)

Declare @NextID BigInt
Select @NextID = IsNull(Max(ID), 1) + 1
       From Your_Table

以上查询工作只有一切都很好。 最好的选择是:

DBCC CheckIdent('Table_name')