|
INSERT в неинкрементное поле
|
|||
---|---|---|---|
#18+
Скажите пожалуйста, как можно сделать INSERT в неинкрементное поле, чтобы при вставке каждой строке значение увеличивалось на +1 от предыдущей строки? Хотелось бы обойтись без курсора. В приложенной картинке это поле keys. id - атоинкрементное. Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2020, 11:23 |
|
INSERT в неинкрементное поле
|
|||
---|---|---|---|
#18+
Кесарь ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2020, 11:32 |
|
INSERT в неинкрементное поле
|
|||
---|---|---|---|
#18+
L_argo Кесарь В совсем старых версиях sequence делается руками на коленке за пару минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2020, 12:05 |
|
INSERT в неинкрементное поле
|
|||
---|---|---|---|
#18+
Сиквентс неиспользованные числа не возвращает в пул при откате транзакции, так что не на коленке за пару минут. Потребуется CLR или иной сервис. Чтобы нумерация была без пропусков, потребуется создать узкое горло на уровне процессов, sp_getapplock, чтобы в один момент времени ставка происходило только из одного процесса. В этом случае при откате таблица-нумератор также откатит счетчик. И следующий процесс начнет нумерацию в последнего сохранённого номера. Вопрос в том - допускают ли задачи такое "горло". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2020, 16:08 |
|
INSERT в неинкрементное поле
|
|||
---|---|---|---|
#18+
Владислав Колосов Чтобы нумерация была без пропусков, потребуется создать узкое горло на уровне процессов, sp_getapplock IDENTITY тоже не дает гарантию отстутствия пропусков. По-моему можно просто делать все на уровне repeatable read и выбирать max() из таблицы. Но дедлок при этом будет возникать запросто. А можно на поле keys поставить unique и в случае ошибки вставки делать повторные попытки. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2020, 17:29 |
|
|
start [/forum/topic.php?fid=46&msg=40021689&tid=1685380]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 299ms |
total: | 456ms |
0 / 0 |