Идентификатор необычного приращения
Я создал таблицу в 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
,