powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
32 сообщений из 32, показаны все 2 страниц
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624776
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624778
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

вам хелп запрещено читать?
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624781
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

а вообще, что такое автоинкрементное поле, а то варианты :)
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624784
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

нет
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624787
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapИгорь_UUS,

нета если SEQUENCE
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624797
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

сиквенс, всё таки, вряд ли можно назвать автоинкрементом
это по сути дефолт на поле (вызов функции)
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624811
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДедушкаTaPaK,

сиквенс, всё таки, вряд ли можно назвать автоинкрементом
это по сути дефолт на поле (вызов функции)
ну "Автоинкрементоне поле"... процессорами то тоже всё подряд называют :) ну и identity можносбросить
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624838
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
задача следующая... нужно поле 2 байт (от 1 до 64535), каждая новая запись должна иметь следующий номер по порядку. Когда доходит до 64535 идёт сброс на 0.

Сложность в том, что с этой таблицей работает сервис с несколькими потоками, он должен брать запись с гарантированным уникальным ID 2 байт. Если поле identity то это гарантирует на уровне БД, что поле будет иметь уникальный идентификатор. Но вопрос, как правильно его сбросить
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624840
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUSЕсли поле identity то это гарантирует на уровне БД, что поле будет иметь уникальный идентификаторНет
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624841
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

SEQUENCE ваш вариант
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624847
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapИгорь_UUSЕсли поле identity то это гарантирует на уровне БД, что поле будет иметь уникальный идентификаторНетУникальность гарантирует только уникальный индекс.

Можно сделать поле BIGINT IDENTITY (в нашей жизни вряд ли переполнится)
и вычисляемое поле на базе этого, которое будет вычислять IdentityField%64536 .
Вот это поле и будет удовлетворять вашим требованиям.
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624859
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

стоит отдельно
авторкаждая новая запись должна иметь следующий номер по порядку.
этого "просто так" не будет
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624863
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapiapпропущено...
НетУникальность гарантирует только уникальный индекс.

Можно сделать поле BIGINT IDENTITY (в нашей жизни вряд ли переполнится)
и вычисляемое поле на базе этого, которое будет вычислять IdentityField%64536 .
Вот это поле и будет удовлетворять вашим требованиям.Поправка:
Код: sql
1.
2.
IdentityField BIGINT IDENTITY UNIQUE,
Field AS CAST((IdentityField-1)%64535+1 AS SMALLINT)
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624867
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKИгорь_UUS,

стоит отдельно
авторкаждая новая запись должна иметь следующий номер по порядку.
этого "просто так" не будетПри удалении будут появляться "дырки"
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624877
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapTaPaKИгорь_UUS,

стоит отдельно
пропущено...

этого "просто так" не будетПри удалении будут появляться "дырки"
ну не только
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624938
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iapiapпропущено...
Уникальность гарантирует только уникальный индекс.

Можно сделать поле BIGINT IDENTITY (в нашей жизни вряд ли переполнится)
и вычисляемое поле на базе этого, которое будет вычислять IdentityField%64536 .
Вот это поле и будет удовлетворять вашим требованиям.Поправка:
Код: sql
1.
2.
IdentityField BIGINT IDENTITY UNIQUE,
Field AS CAST((IdentityField-1)%64535+1 AS SMALLINT)



Вроде идея понятно, но не понятно как оно может работать((

с SEQUENCE никогда не работал... подскажите с чего начать, получается нужно создать SEQUENCE, потом его нужно как то применять при создании новой записи в таблице... это как выглядит на tsql (очень буду признателен)
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624945
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624948
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One https://habrahabr.ru/post/123446/

SEQUENCE получается появился в версии MSSQL 2012? в 2008 получается его нет?
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624955
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде бы с 2008 r2 sp1

и вот это ещё почитайте:
https://msdn.microsoft.com/ru-ru/library/ff878370(v=sql.120).aspx
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624958
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUSKonst_One https://habrahabr.ru/post/123446/

SEQUENCE получается появился в версии MSSQL 2012? в 2008 получается его нет? https://docs.microsoft.com/ru-ru/sql/t-sql/statements/create-sequence-transact-sql
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624959
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneвроде бы с 2008 r2 sp1

и вот это ещё почитайте:
https://msdn.microsoft.com/ru-ru/library/ff878370(v=sql.120).aspx
вроде бы в вашей же ссылке
Область применения: SQL Server (начиная с SQL Server 2012 до текущей версии)
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624962
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверить не могу , но проскакивало вроде бы, что в 2008 r2 уже появилось
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624965
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneпроверить не могу , но проскакивало вроде бы, что в 2008 r2 уже появилось
проскочило сразу в 2012
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39624966
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя нет, только с 2012
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39625000
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа... есть ещё идея, есть автоинкремент по полю INT, размер 4 байта. В моём случае уникальность будет гарантировать младшие 2 байта.

Вопрос, можно ли средствами TSQL из INT 4 байт вычленить 2 младших байта и получить из этих 2 байт число?
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39625004
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUSГоспода... есть ещё идея, есть автоинкремент по полю INT, размер 4 байта. В моём случае уникальность будет гарантировать младшие 2 байта.

Вопрос, можно ли средствами TSQL из INT 4 байт вычленить 2 младших байта и получить из этих 2 байт число?
а о чём вам iap пишет?
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39625022
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKИгорь_UUSГоспода... есть ещё идея, есть автоинкремент по полю INT, размер 4 байта. В моём случае уникальность будет гарантировать младшие 2 байта.

Вопрос, можно ли средствами TSQL из INT 4 байт вычленить 2 младших байта и получить из этих 2 байт число?
а о чём вам iap пишет?


не могу понять ту идею...

есть у меня поле INT, например там 20млн. записей, как мне запросом из каждого идентификатора вычленить 2 младших байта и перевести их в число?

т.е.
Код: sql
1.
SELECT [ID] /*, как из ID 4 байт вычленить 2 младших байта и перевести в число? */ FROM [MyTable]
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39625032
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

SELECT ID & 0xFFFF
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39625114
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKИгорь_UUS,

SELECT ID & 0xFFFF

Спасибо, то что надо... попробую пойти в таком напровлении
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39625182
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUSне могу понять ту идею...Вы не знаете что такое остаток от целочисленного деления?
Но это очень странно, не находите?
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39625282
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один момент господа!, ТС (топикстартеру) нужен диапазон до 0 - 6 4 535 а не 0 - 65535 ... Так что маска по 0FFFFx не прокатит (разве что 0FC17h ;-) ...

И, кстати, не понятно, что будет делаться со строками у которых (возможно!) айдишнег будет лежать в пределах 64535 - 65535 ....

Ну а так - да...
...
Рейтинг: 0 / 0
Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
    #39625283
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_Один момент господа!, ТС (топикстартеру) нужен диапазон до 0 - 6 4 535 а не 0 - 65535 ... Так что маска по 0FFFFx не прокатит (разве что 0FC17h ;-) ...

И, кстати, не понятно, что будет делаться со строками у которых (возможно!) айдишнег будет лежать в пределах 64535 - 65535 ....

Ну а так - да...

И это... там надо было с 1 - ы , но сброс идёт на 0.... Вощем момент инкремента - видимо "до" ... Как в C конструкция ++i , кажется?
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Автоинкрементное поле, когда доходит до верхнего предела, начинает отсчёт заново?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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