powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / INSERT в неинкрементное поле
8 сообщений из 8, страница 1 из 1
INSERT в неинкрементное поле
    #40021689
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите пожалуйста,
как можно сделать INSERT в неинкрементное поле, чтобы при вставке каждой строке значение увеличивалось на +1 от предыдущей строки?
Хотелось бы обойтись без курсора.
В приложенной картинке это поле keys. id - атоинкрементное.



Заранее благодарен.
...
Рейтинг: 0 / 0
INSERT в неинкрементное поле
    #40021690
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
INSERT в неинкрементное поле
    #40021691
Кесарь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
INSERT в неинкрементное поле
    #40021692
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но только с 2012 версии.
...
Рейтинг: 0 / 0
INSERT в неинкрементное поле
    #40021701
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
но только с 2012 версии.

В совсем старых версиях sequence делается руками на коленке за пару минут.
...
Рейтинг: 0 / 0
INSERT в неинкрементное поле
    #40021774
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сиквентс неиспользованные числа не возвращает в пул при откате транзакции, так что не на коленке за пару минут. Потребуется CLR или иной сервис.

Чтобы нумерация была без пропусков, потребуется создать узкое горло на уровне процессов, sp_getapplock, чтобы в один момент времени ставка происходило только из одного процесса. В этом случае при откате таблица-нумератор также откатит счетчик. И следующий процесс начнет нумерацию в последнего сохранённого номера. Вопрос в том - допускают ли задачи такое "горло".
...
Рейтинг: 0 / 0
INSERT в неинкрементное поле
    #40021798
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Чтобы нумерация была без пропусков, потребуется создать узкое горло на уровне процессов, sp_getapplock

IDENTITY тоже не дает гарантию отстутствия пропусков. По-моему можно просто делать все на уровне repeatable read и выбирать max() из таблицы. Но дедлок при этом будет возникать запросто. А можно на поле keys поставить unique и в случае ошибки вставки делать повторные попытки.
...
Рейтинг: 0 / 0
INSERT в неинкрементное поле
    #40021809
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / INSERT в неинкрементное поле
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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