NEWID() для INT (BigInt, SmallInt) в T-SQL
По ходу работы столкнулся со следующей проблемой — необходимо было сгенерировать уникальный в пределах БД показатель типа INT. Вообще, для uniqueidentifier существет такая замечательная функция NEWID(), которая генерирует заветное значение, а вот для INT'а подобную функцию придется реализовывать самостоятельно.
Вообще, сделать подобно можно, сохранив уже сгенерированные IDшники в какую-нибудь таблицу. Но как реализовать генерацию нового значения?
Первой мыслью было использование транзакций, нахождение максимального числа с последующим его увеличением. Конечно, такой вариант тоже «прокатывает», но параноик-кун, затаившийся внутри меня, кричал о возможных таймаутах, ошибках в транзакции и прочих невкусностях.
Читать дальше →
Вообще, сделать подобно можно, сохранив уже сгенерированные IDшники в какую-нибудь таблицу. Но как реализовать генерацию нового значения?
Первой мыслью было использование транзакций, нахождение максимального числа с последующим его увеличением. Конечно, такой вариант тоже «прокатывает», но параноик-кун, затаившийся внутри меня, кричал о возможных таймаутах, ошибках в транзакции и прочих невкусностях.
Читать дальше →