【发布时间】:2013-03-29 21:03:15
【问题描述】:
我正在尝试做这样的事情:
declare @myCurrentSeedValue int;
select @myCurrentSeedValue = DBCC CheckIdent('MyTable', NORESEED);
这显然是不正确的语法。有人对我如何做到这一点有任何建议吗?
我知道我可以这样做:
select @myCurrentSeedValue = IDENT_SEED('MyTable');
但问题在于每个 MSDN 上的 IDENT_SEED 函数:
使用 DBCC CHECKIDENT 更改标识列的当前值不会更改此函数返回的值。
这可能会有问题,因为我们有其他存储过程会调用 DBCC CHECKIDENT 并重新设置标识列的种子,所以我实际上需要当前种子而不是原始种子。
【问题讨论】:
-
在标识列上选择最大值?
-
@Blam 这样做我担心如果在我选择列上的 MAX 之前删除了一条记录,我将无法获得真正的当前种子值。但是,既然我重新考虑了这个选项,我想重新设定这个值是可以的,因为数据库中不再存在记录。我倾向于这是我的解决方案。让我尝试一下,如果它有效,我会将其标记为解决方案。
标签: sql tsql stored-procedures syntax