从SQL Server删除记录但不重置PK

时间:2017-04-05 22:26:19

标签: sql-server sql-server-2014

我使用TRUNCATE函数从SQL Server 2014上的表中删除了所有记录,但现在此表上的新记录以PK 1开头。

有没有办法不重置主键,以便新记录从最后一个PK + 1开始?

2 个答案:

答案 0 :(得分:0)

使用DELETE似乎有效。

DECLARE @Tab TABLE (Id INT IDENTITY(1,1), Col VARCHAR)
DECLARE @Num INT = 10,
        @Count INT = 0
WHILE @Count < @Num
BEGIN
INSERT @Tab
VALUES('')
SET @Count = @Count + 1
END
DELETE FROM @Tab
INSERT @Tab
VALUES ('')
SELECT *
FROM @Tab

答案 1 :(得分:0)

删除会有效。但有时删除所花费的时间可能是一个问题。如果必须截断,可以执行以下操作:

  1. 从表中获取最大值并将其存储在变量中。
  2. 截断表格
  3. 将标识重新设置为变量值+ 1。
  4. 这是一个例子。

    DECLARE @MaxID AS INT;
    SELECT @MaxID = MAX(ID) + 1
    FROM TableA;
    
    TRUNCATE TABLE TableA;
    
    DBCC CHECKIDENT ('dbo.TableA', RESEED, @MaxID); 
    

    现在,表中的新插入将从之前的标识值继续。

    的Marius