| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Генерация уникального значения |
| Автор: Alex_D 16.2.2007, 15:04 |
| В базе данных есть таблица в которой ключевое поле имеет тип int. Значение первичного ключа должно задаваться двумя способами: 1. Оно может задаваться явно (с этим проблем нет) 2. Генерируется автоматически, при этом в виде пераметров должен передаваться диапазон возможных значений. Можно ли организовать это средствами SQL Server? |
| Автор: Dremlin 16.2.2007, 15:13 |
| Написать хранимую процедуру для генерации ключа по параметрам и вызывать ее перед вставкой. |
| Автор: Alex_D 16.2.2007, 15:28 |
| Можно пример. Буду очень благодарен. |
| Автор: SergeBS 16.2.2007, 15:35 |
| Alex_D, Читай BOL: Identity Dremlin, см. выше. |
| Автор: Alex_D 16.2.2007, 16:08 |
| Но ведь и свойство и функция Identity устанавливается при создании таблицы. Каким образом его использовать при добавлении новой записи? |
| Автор: SergeBS 16.2.2007, 17:10 | ||||
Alex_D,
Нет.
Ничто не мешает сделать свойство identity у столбца и не париться? Выставив флажок SET IDENTITY_INSERT [database.[owner.]]{table} {ON | OFF} разрешаешь/запрещаешь ручную вставку. До понедельника |
| Автор: Alex_D 17.2.2007, 21:00 |
| Да, но как сделать так, чтобы сгенерированные значения попадали в заданный интервал. Если быть точнее, то необходимо чтобы сгенерированные значения не попадали в интервал, отведенный для ручного ввода. |
| Автор: kobra 17.2.2007, 23:58 |
| IDENTITY [ (seed , increment) ] можно напроимер договорится что положительние числа для ручного ввода, отрицательние IDENTITY. тогда IDENTITY (-1, -1) можно напроимер договорится что четные числа для ручного ввода, нечетные IDENTITY. тогда IDENTITY (1, 2) |
| Автор: Alex_D 18.2.2007, 10:31 |
| Да, так подходит. У меня первые 10 тысяч зарезервированы для ручного ввода, а остальное для автоматического. Огромное спасибо |
| Автор: SergeBS 19.2.2007, 15:22 |
| Alex_D, Тему закрой - галочку поставь. |