首先,我知道this question没有得到解答,因为OP真正试图做的是没有增加一个标识列
我有一个当前种子值为x的标识列,我想将其重新设置为x + 1(即我希望我的标识列直接从x跳转到x + 2.
我知道我可以使用以下command
来做到这一点create procedure IncrementSeedValue
(
@TableName varchar(255),
@IncrementValue int
)
as
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
declare @v bigint
select @v = IDENT_CURRENT(@TableName)+@IncrementValue
DBCC CHECKIDENT (@TableName, RESEED, @v )
COMMIT TRANSACTION;
go
但是,我有几个问题:
答案 0 :(得分:1)
每个INSERT都会消耗IDENTITY值。
我会INSERT一个值并立即删除它,或者插入该值并发出ROLLBACK。
在任何一种情况下,都会消耗IDENTITY值。
我不认为DBCC命令应该在“普通”代码中使用,并且只应保留用于管理任务。
或者,如果您可以使用SET IDENTITY_INSERT ON并计算带有跳过值的下一个值应该是什么。