Про возможность генерировать новые значения чисел в SQL Server 7.0

Владимир
Дата: 06.02.2001 15:52:32
Скажем надо создать составной номер договора в котором есть буква и счетчик.
Проблема в следующем - нужно генерировать число счетчика для его записи, но надо также исключить возможность записи в таблицу одинаковых номеров.

Есть ли в SQL Server 7.0 встроеные механизмы для генерации чисел как в InterBase - объект generator и функция gen_id() ?

Или всетаки придется извращаться через созданную для этих целей таблицу и блокировать значение счетчика если кто-то к нему уже обратился?

Спасибо за внимание.
Дед Маздай
Дата: 08.02.2001 14:55:58
Существует ф-ция identity(), но она может использоваться только в select ... into для населения поля типа автоинкремент в новой таблице. В остальном - через фиктивную таблицу и @@identity или IDENT_CURRENT('table_name'). Кстати, понятно, почему нет подобной универсальной ф-ции. Все з-т от масштаба, для к-го должна вестись непрерывная посл-ть целых чисел. Для данной табл.? Для сессии? Для всех польз-й? Это определяется Вашим приложением, соотв-но, решать, как именно - тоже Вам. К сожалению, соблюсти уникальность для целых чисел гораздо труднее, чем для uniqueidentifier. Да и исчерпываются они быстрее (даже с учетом bigint). Если бы не номер договора, я бы посоветовал newid(). Хотя, черт его знает. Может, guid и в номере договора будет смотреться неплохо.
Владимир
Дата: 08.02.2001 15:46:38
Спасибо за ответ. Я так в принципе и предпологал. Просто хотел удостовериться, прежде чем начать изголяться.

С уважением Владимир.