SQL 服务器:对任何删除操作重置身份

SQL Server: reset identity on any delete action

举个简单的例子。有一个 table 名为 test:

现在我要删除一些数据而不重置身份日志:

当我插入新数据时,新的id将是7:

我希望在每次删除查询时自动调用 DBCC CHECKIDENT 函数来重置 table 测试中的标识。所以,当我插入 'Purple' 时,它的 ID 将是 4。有没有办法做到这一点?

您可以创建一个 DELETE TRIGGER 然后使用

SQL Fiddle Demo

CREATE TRIGGER sampleTrigger
    ON dbo.test
    FOR DELETE
AS
    DECLARE @maxID int;

    SELECT @maxID = MAX(id)
    FROM test;

    DBCC CHECKIDENT (test, RESEED, @maxID);
GO

因此下一次插入将使用 4。

但这又不是你真正应该担心的事情