2013-03-29 94 views
1

我试图做这样的事情:有没有办法将DBCC CheckIdent的值存储到变量中?

declare @myCurrentSeedValue int; 
select @myCurrentSeedValue = DBCC CheckIdent('MyTable', NORESEED); 

这显然是不正确的语法。有没有人有任何建议,我可以做到这一点?

我知道我可以做这样的事情:

select @myCurrentSeedValue = IDENT_SEED('MyTable'); 

但随着这个问题是每MSDN上IDENT_SEED功能:

更改的标识列的当前值使用DBCC CHECKIDENT不会更改此函数返回的值。

这可能是问题,因为我们有其他的存储过程将调用DBCC CHECKIDENT和补种标识列,所以实际需要的电流种子不是原来的。

+0

在标识列上选择max? – Paparazzi

+0

@Blam因此,我担心如果在我选择列上的MAX之前删除了一条记录,那么我将无法获得真实的当前种子值。 但是,现在我重新考虑这个选项,我认为可以重新设置为该值,因为记录不再存在于数据库中。 我倾向于这是我的解决方案。让我尝试一下,如果它的工作方式,我会喜欢它,我将它标记为解决方案。 – dgsmith15

回答

7

使用Ident_current您可以获取表的当前身份,无论哪个进程更新表身份。它适用于任何会话,任何范围。


declare @myCurrentSeedValue int; 
select @myCurrentSeedValue = IDENT_CURRENT('MyTable') 
select @myCurrentSeedValue 
+0

我非常喜欢这个解决方案。感谢您的帮助。 – dgsmith15

相关问题