Sql Server:当表被截断时,保持自动增量不被重置

时间:2016-05-18 07:44:06

标签: sql sql-server identity unique-key

这个问题基本上与其他一些问题相反。

我有一个递增标识的表,定义如下:

[Instance_ID] [int] IDENTITY(1, 1) NOT NULL

这很好用。但是,当我从该表中删除所有记录并开始插入新记录时,Instance_ID从1开始。当我从该表中提取以供以后使用时,这会引起一些问题。

是否有办法确保此特定列从不生成相同的值两次,即使在被截断后?

4 个答案:

答案 0 :(得分:1)

您可以保存当前标识并在重新播种时使用它:

DECLARE @i INT = IDENT_CURRENT('tablename') + 1
TRUNCATE TABLE tablename
DBCC CHECKIDENT(tablename, RESEED, @i)

答案 1 :(得分:0)

使用不带where子句的Delete Table而不是截断表。

试试这样。

Delete tablename

答案 2 :(得分:0)

重新制作你的表格

DBCC CHECKIDENT (yourtable, reseed, 154)

而不是154使用您想要Instance_ID

的值

答案 3 :(得分:0)

Declare @id int
Select @id = max(id)+1 from testtable
Truncate Table testtable
Dbcc CheckIdent (testtable, reseed, @id)