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



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

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

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

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


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