Проблема идентичности автоинкремента - PullRequest
0 голосов
/ 18 февраля 2011

Использование SQL Server.

Table1

RecordNo   ID
---------------
2          001
3          002
4         003
....

Столбец RecordNo является столбцом Identity для Table1

Проблема

Иногда столбец RecordNoначиная с 0, иногда с 2. Как избежать этой проблемы - Столбец RecordNo всегда должен начинаться с 1. Он не должен начинаться с других чисел.

RecordNo   ID
--------------    
1          001
2          002
3          003
....

Нужна справка по запросу

Ответы [ 2 ]

3 голосов
/ 18 февраля 2011

Автоматически увеличиваемый идентификационный номер увеличивается независимо от того, зафиксирована запись или нет. Мне кажется, что, возможно, первоначальная вставка не удалась или находится внутри транзакции, которая не была зафиксирована.

Тип столбца идентификаторов должен быть суррогатным идентификатором, и не рекомендуется использовать этот номер для чего-либо еще. Можно создать собственную функцию автоинкремента, но это, как правило, плохая идея из-за проблем с производительностью и параллелизмом.

Кроме того, можно повторно заполнить столбец идентификации обратно до 1 , таким образом:

dbcc checkident (table1, reseed, 1)

Редактировать: Я предполагаю, что у вас правильно задано определение таблицы, для Seed установлено значение 1, а для приращения также установлено значение 1.

1 голос
/ 18 февраля 2011

Вы можете установить начальное значение при создании таблицы:

Create Table Table1
    (
    RecordNo int not null Identity(1,1)
    , Id char(3) ...
    )

IDENTITY [(семя, приращение)]

Если вам нужно повторно заполнитьзатем приведенную таблицу см. DBCC CHECKIDENT .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...