Как реализовать генерацию последовательных числовых идентификаторов в MS SQL?
Наткнулся на проблему внезапных прыжков Identity Seed: при перезагрузке сервера БД значение может увеличиться на 1000. Что в итоге приводит к наличию примерно такой ситуации в таблице: записи нумеруются с 1, 2, 3...затем 1001, 1002 и так далее.
Прочитал что к чему; судя по всему, не стоит свою логику строить вокруг Identity. Каким же образом реализовать последовательный инкремент с поддержкой целостности, если это бизнес-необходимость? В голову приходит только вариант с добавлением еще одного поля... логику которого нужно как раз и прописать.
потому что этот механизм для гарантии уникальности, а не для гарантии неразрывной последовательности. все нормально.
заказываться бизнес-логикой на такие вещи - не правильно.
если вам нужно прям таки важна последовательная генерация номеров - SELECT MAX
А каковы гарантии с Select Max? Пока вы вычисляете максимальное значение, в это время кто-то записывает в базу новую строку и ваш селект уже неактуален.
А каковы гарантии с Select Max? Пока вы вычисляете максимальное значение, в это время кто-то записывает в базу новую строку и ваш селект уже неактуален.