Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не верно увеличиваются ID / 16 сообщений из 16, страница 1 из 1
10.05.2018, 11:04
    #39642521
Барсег
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
Здравствуйте, уважаемые знатоки.
Позвольте задать вопрос: MS SQL Managment studio 2012. Создаю таблицу, в таблице есть инкрементное поле ID.
Начинаю работу с таблицей, тестирую: добавляю, удаляю данные. И вот, что обнаружил, ID сначала идут 1,2,3,4,5...50,51,1052,1053,1054...
Откуда берется такой шаг? Я работаю на локальной машине, больше никто, кроме меня не имеет доступа к этой базе, и добавлял в таблицу не более сотни записей.
Если кто сталкивался с этим, подскажите пожалуйста.
...
Рейтинг: 0 / 0
10.05.2018, 11:20
    #39642528
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
Автоинкремент гарантирует только то, что очередное сгенерированное значение будет больше предыдущего (если не корректировать настройки, конечно). А вот непрерывности - не гарантирует. Нужна непрерывность - используйте дополнительное поле-счётчик с "ручным" пересчётом.
...
Рейтинг: 0 / 0
10.05.2018, 11:24
    #39642530
Барсег
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
Akina, благодарю вас за ответ. А можете не большой пример привести? Никогда не пользовался счетчиком с "ручным" пересчетом.
...
Рейтинг: 0 / 0
10.05.2018, 11:51
    #39642545
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
...
Рейтинг: 0 / 0
10.05.2018, 11:52
    #39642546
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
CREATE SEQUENCE
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-sequence-transact-sql
Доступно с версии 2012.
...
Рейтинг: 0 / 0
10.05.2018, 11:58
    #39642550
Барсег
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
Благодарю всех, кто ответил :)
...
Рейтинг: 0 / 0
10.05.2018, 13:04
    #39642603
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
Akina,

seaquence тоже не гарантирует равномерное возрастание
...
Рейтинг: 0 / 0
10.05.2018, 13:22
    #39642616
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
TaPaKseaquence тоже не гарантирует равномерное возрастаниеДа... но если отключить кэширование, то разве что в случае отката транзакции, в которой получаем значение (ну или вообще втупую получили и не стали использовать)...
...
Рейтинг: 0 / 0
10.05.2018, 13:29
    #39642623
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
AkinaTaPaKseaquence тоже не гарантирует равномерное возрастаниеДа... но если отключить кэширование, то разве что в случае отката транзакции, в которой получаем значение (ну или вообще втупую получили и не стали использовать)...
будем называть "ну почти-почти гаранитирует" :)
...
Рейтинг: 0 / 0
10.05.2018, 14:01
    #39642651
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
TaPaK , я вообще не могу представить, как ГАРАНТИРОВАТЬ. Всегда, при любой методике, есть последовательность событий, которая приведёт к разрыву последовательности и пропуску значений.
...
Рейтинг: 0 / 0
10.05.2018, 14:02
    #39642654
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
Akina TaPaK , я вообще не могу представить, как ГАРАНТИРОВАТЬ. Всегда, при любой методике, есть последовательность событий, которая приведёт к разрыву последовательности и пропуску значений.Гарантирует пересчет внутри модифицирующей транзакции.
...
Рейтинг: 0 / 0
10.05.2018, 14:08
    #39642656
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
Гавриленко Сергей АлексеевичГарантирует пересчет внутри модифицирующей транзакции.Если она, такая модифицирующая транзакция, возможна. А она не всегда возможна. Например, вставляемые данные, включая сгенерированный идентификатор, копируются в таблицу лога, которая UPDATE/DELETE DENY - что тут модифицируешь?
...
Рейтинг: 0 / 0
10.05.2018, 14:11
    #39642660
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
AkinaГавриленко Сергей АлексеевичГарантирует пересчет внутри модифицирующей транзакции.Если она, такая модифицирующая транзакция, возможна. А она не всегда возможна. Например, вставляемые данные, включая сгенерированный идентификатор, копируются в таблицу лога, которая UPDATE/DELETE DENY - что тут модифицируешь?Модифицировтаь данные до вставки с предварительной блокировкой таблицы.
...
Рейтинг: 0 / 0
10.05.2018, 14:15
    #39642667
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
может автору реально и не нужен этот непререрывный счётчик, может у него всего лишь отчёт какой-нибудь и достаточно сделать правильный запрос с нумерацией?
...
Рейтинг: 0 / 0
10.05.2018, 14:16
    #39642669
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
Гавриленко Сергей Алексеевич , ааа, в этом смысле... ну при монопольном доступе - оно конечно да. SELECT 1+MAX(id)... если вставлять по одной записи...
...
Рейтинг: 0 / 0
11.05.2018, 10:09
    #39643078
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верно увеличиваются ID
Konst_Oneможет автору реально и не нужен этот непререрывный счётчик, может у него всего лишь отчёт какой-нибудь и достаточно сделать правильный запрос с нумерацией?
+1
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не верно увеличиваются ID / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]