使用触发器插入具有顺序标识的行

时间:2014-12-21 11:19:07

标签: sql-server

我正在尝试克服我删除行时出现的表格中的身份空白问题,其中SQL Server管理工作室不会增加表中存在的最后一个标识,而是最后创建的行标识,即使它是删除。

我不确定如何在触发器中执行此操作:

1-插入行时
2-获取表中存在的最后一个身份
3-通过1增加身份 4-在(3-)
中设置要插入的新行的标识 5-执行插入

1 个答案:

答案 0 :(得分:-1)

您可以使用DBCC CHECKIDENT将身份重置为表格中的最大身份值

  

检查指定表的当前标识值   并且,如果需要,则更改标识值。您可以   还使用DBCC CHECKIDENT手动设置新的当前标识值   对于标识栏。

简单演示

CREATE TABLE trgtest
  (
     id   INT IDENTITY(1, 1),
     NAME VARCHAR(30)
  )

INSERT INTO trgtest
VALUES     ('A'),('B'),('C'),('D')

SELECT * FROM   trgtest

DELETE FROM trgtest
WHERE  NAME = 'D'

DECLARE @max_id INT

SELECT @max_id = Max(id)
FROM   trgtest

DBCC checkident(trgtest, reseed, @max_id) -- Reseting the Identity value to Max identity value in Table

INSERT INTO trgtest
VALUES      ('D')

SELECT * FROM   trgtest