Идентификатор необычного приращения

Я создал таблицу в SQL с 3 столбцами. Один из ID (со спецификацией Identity) и два других столбца. Я сохранял запись в 2 столбцах через приложение C#, поскольку столбец идентификатора получает приращение автоматически. Так что все было хорошо до 160-й записи, после этого приращение идентификатора пошло до 1172, а затем началось приращение оттуда, как 1173, 1174 и так далее...

Я не знаю, сделал ли я что-то не так при создании таблицы и столбца идентификатора. Не в состоянии понять. Может кто-нибудь, пожалуйста, руководство. Я прилагаю скриншот.

Изменить: я исправил это с помощью запроса.

DBCC CHECKIDENT (mytable, RESEED, 160)

Теперь столбец идентификаторов вернулся к 161 с шагом +1. Все хорошо.

1 ответ

Как правило, вы увидите это, если в транзакции, которая была откатана, были сделаны INSERT. Вот репродукция для вашего сценария:

CREATE TABLE #Test (
  Id INT IDENTITY(1, 1) PRIMARY KEY, 
  Txt NVARCHAR(100)
);

INSERT INTO #Test (Txt) VALUES ('A'), ('B');

BEGIN TRAN mytran
INSERT INTO #Test (Txt) VALUES ('C'), ('D');
ROLLBACK TRAN mytran

INSERT INTO #Test (Txt) VALUES ('E'), ('F');

SELECT * FROM #Test;

DROP TABLE #Test;

Это выведет:

Id  Txt
1   A
2   B
5   E
6   F

Так что с "C" и "D" отсутствует, и пробел в Id поле между 2 а также 5,

Другие вопросы по тегам