Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не верно увеличиваются ID  [new]
Барсег
Member

Откуда:
Сообщений: 4
Здравствуйте, уважаемые знатоки.
Позвольте задать вопрос: MS SQL Managment studio 2012. Создаю таблицу, в таблице есть инкрементное поле ID.
Начинаю работу с таблицей, тестирую: добавляю, удаляю данные. И вот, что обнаружил, ID сначала идут 1,2,3,4,5...50,51,1052,1053,1054...
Откуда берется такой шаг? Я работаю на локальной машине, больше никто, кроме меня не имеет доступа к этой базе, и добавлял в таблицу не более сотни записей.
Если кто сталкивался с этим, подскажите пожалуйста.

К сообщению приложен файл. Размер - 108Kb
10 май 18, 11:04    [21399336]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20181
Автоинкремент гарантирует только то, что очередное сгенерированное значение будет больше предыдущего (если не корректировать настройки, конечно). А вот непрерывности - не гарантирует. Нужна непрерывность - используйте дополнительное поле-счётчик с "ручным" пересчётом.
10 май 18, 11:20    [21399382]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Барсег
Member

Откуда:
Сообщений: 4
Akina, благодарю вас за ответ. А можете не большой пример привести? Никогда не пользовался счетчиком с "ручным" пересчетом.
10 май 18, 11:24    [21399393]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
Identity прыгнуло на 1000

Если очень хочется:

Генераторы в MSSQL
10 май 18, 11:51    [21399481]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20181
CREATE SEQUENCE
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-sequence-transact-sql
Доступно с версии 2012.
10 май 18, 11:52    [21399489]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Барсег
Member

Откуда:
Сообщений: 4
Благодарю всех, кто ответил :)
10 май 18, 11:58    [21399501]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Akina,

seaquence тоже не гарантирует равномерное возрастание
10 май 18, 13:04    [21399700]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20181
TaPaK
seaquence тоже не гарантирует равномерное возрастание
Да... но если отключить кэширование, то разве что в случае отката транзакции, в которой получаем значение (ну или вообще втупую получили и не стали использовать)...
10 май 18, 13:22    [21399763]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Akina
TaPaK
seaquence тоже не гарантирует равномерное возрастание
Да... но если отключить кэширование, то разве что в случае отката транзакции, в которой получаем значение (ну или вообще втупую получили и не стали использовать)...

будем называть "ну почти-почти гаранитирует" :)
10 май 18, 13:29    [21399797]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20181
TaPaK, я вообще не могу представить, как ГАРАНТИРОВАТЬ. Всегда, при любой методике, есть последовательность событий, которая приведёт к разрыву последовательности и пропуску значений.
10 май 18, 14:01    [21399925]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36688
Akina
TaPaK, я вообще не могу представить, как ГАРАНТИРОВАТЬ. Всегда, при любой методике, есть последовательность событий, которая приведёт к разрыву последовательности и пропуску значений.
Гарантирует пересчет внутри модифицирующей транзакции.
10 май 18, 14:02    [21399929]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20181
Гавриленко Сергей Алексеевич
Гарантирует пересчет внутри модифицирующей транзакции.
Если она, такая модифицирующая транзакция, возможна. А она не всегда возможна. Например, вставляемые данные, включая сгенерированный идентификатор, копируются в таблицу лога, которая UPDATE/DELETE DENY - что тут модифицируешь?
10 май 18, 14:08    [21399944]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36688
Akina
Гавриленко Сергей Алексеевич
Гарантирует пересчет внутри модифицирующей транзакции.
Если она, такая модифицирующая транзакция, возможна. А она не всегда возможна. Например, вставляемые данные, включая сгенерированный идентификатор, копируются в таблицу лога, которая UPDATE/DELETE DENY - что тут модифицируешь?
Модифицировтаь данные до вставки с предварительной блокировкой таблицы.
10 май 18, 14:11    [21399952]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
может автору реально и не нужен этот непререрывный счётчик, может у него всего лишь отчёт какой-нибудь и достаточно сделать правильный запрос с нумерацией?
10 май 18, 14:15    [21399967]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20181
Гавриленко Сергей Алексеевич, ааа, в этом смысле... ну при монопольном доступе - оно конечно да. SELECT 1+MAX(id)... если вставлять по одной записи...
10 май 18, 14:16    [21399975]     Ответить | Цитировать Сообщить модератору
 Re: Не верно увеличиваются ID  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Konst_One
может автору реально и не нужен этот непререрывный счётчик, может у него всего лишь отчёт какой-нибудь и достаточно сделать правильный запрос с нумерацией?

+1
11 май 18, 10:09    [21402205]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить