是否存在原子进程使所有PK / Identity Columns值连续(通过更改PK值)?

时间:2018-02-16 14:19:45

标签: tsql

我有一个带有硬性要求的日志记录Db,因为非常具体地定义了主键:

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

没有其他要求,没有外键等。

将定期删除早于X的记录。

在某些时候,我将不得不处理掉密钥空间的问题。

是否可以进行原子操作,将所有PK从0开始连续变为连续?

例如,给定一个包含这两条记录的表:

  • Pk = 100 ..其他列。,
  • Pk = 1234

结果表将有

  • Pk = 0 ..相同原始数据,新PK ..,
  • Pk = 1

更新1: 我正在考虑这样的解决方案:

CREATE TRIGGER rollOutLogs ON Logs
AFTER INSERT
AS
BEGIN      
    if IDENT_CURRENT( 'Logs' ) >= 10
    DBCC CHECKIDENT ('[Logs]', RESEED, -10);      
    DELETE FROM Logs WHERE Id > IDENT_CURRENT( 'Logs' ) and Id < IDENT_CURRENT( 'Logs' ) + 5;
END
GO

0 个答案:

没有答案