Как получить второй автоинкремент в таблице для SQL Server'а
Самородов Федор Анатольевич: Как получить второй автоинкремент в таблице для SQL Server'а
В таблице может быть только один автоинкремент. Это логично. Зачем может понадобиться второй? Второй будет полезен для реализации произвольного (задаваемого пользователем) порядка сортировки объектов. Добавим столбец с целочисленными значениями и позволим пользователю их менять, чтобы получить желаемый порядок сортировки. Вы много раз встречали такой приём в интерфейсе при оснащении списка кнопками "вверх" и "вниз". Вот так:
Как заполнять это дополнительное поле с приоритетом? Хотелось бы установить на этот столбец автоинкремент (identity), но этот параметр во-первых скорее всего уже занят первичным ключом (второй автоинкремент в таблице не допускается), а во-вторых автоинкремент не позволяет изменять сгенерированные значения.
Решение - использование функции Ident_Current в качестве значения по-умолчанию. Параметр функции - название таблицы.
Теперь это поле будет автоматически заполняться значениями, сгенерированными для идентификатора:
То есть, новая запись будет получать наибольшее значение:
А в дальнейшем пользователь может менять приоритеты для установления желаемого порядка сортировки:
Все, механизмом можно пользоваться:
Если вы используете SQL Server версии 2012 или выше, учтите, что есть более элегантное решение этой задачи, о котором вы можете узнать на наших курсах...
Ближайшие группы
Заказ добавлен в Корзину.
Для завершения оформления, пожалуйста,
перейдите в Корзину!
От какого лица вы будете оплачивать обучение?