这个问题基本上与其他一些问题相反。
我有一个递增标识的表,定义如下:
[Instance_ID] [int] IDENTITY(1, 1) NOT NULL
这很好用。但是,当我从该表中删除所有记录并开始插入新记录时,Instance_ID
从1开始。当我从该表中提取以供以后使用时,这会引起一些问题。
是否有办法确保此特定列从不生成相同的值两次,即使在被截断后?
答案 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)