我有一个带有硬性要求的日志记录Db,因为非常具体地定义了主键:
[Id] int IDENTITY(1,1) NOT NULL,
没有其他要求,没有外键等。
将定期删除早于X的记录。
在某些时候,我将不得不处理掉密钥空间的问题。
是否可以进行原子操作,将所有PK从0开始连续变为连续?
例如,给定一个包含这两条记录的表:
结果表将有
更新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