Уважаемые слушатели! Обращаем ваше внимание, что 01.05.2024 и 09.05.2024 у нас выходные дни. Вы можете оставить сообщение в чате, мы обязательно ответим!

Корзина

Корзина

Частным лицам +7 (495) 232-32-16

Слушателям
от организации
+7 (495) 780-48-44

+7 (495) 780-48-49

Частным лицам +7 (495) 232-32-16

Слушателям
от организации
+7 (495) 780-48-44

+7 (495) 780-48-49

Как получить второй автоинкремент в таблице для SQL Server'а

Самородов Федор Анатольевич: Как получить второй автоинкремент в таблице для SQL Server'а

СФА

В таблице может быть только один автоинкремент. Это логично. Зачем может понадобиться второй? Второй будет полезен для реализации произвольного (задаваемого пользователем) порядка сортировки объектов. Добавим столбец с целочисленными значениями и позволим пользователю их менять, чтобы получить желаемый порядок сортировки. Вы много раз встречали такой приём в интерфейсе при оснащении списка кнопками "вверх" и "вниз". Вот так:

Как заполнять это дополнительное поле с приоритетом? Хотелось бы установить на этот столбец автоинкремент (identity), но этот параметр во-первых скорее всего уже занят первичным ключом (второй автоинкремент в таблице не допускается), а во-вторых автоинкремент не позволяет изменять сгенерированные значения.

Решение - использование функции Ident_Current в качестве значения по-умолчанию. Параметр функции - название таблицы.

IDENT_CURRENT

Теперь это поле будет автоматически заполняться значениями, сгенерированными для идентификатора:

То есть, новая запись будет получать наибольшее значение:

А в дальнейшем пользователь может менять приоритеты для установления желаемого порядка сортировки:

Все, механизмом можно пользоваться:

Если вы используете SQL Server версии 2012 или выше, учтите, что есть более элегантное решение этой задачи, о котором вы можете узнать на наших курсах...

envelope

Спасибо! Вам на e-mail отправлено письмо со ссылкой для подтверждения

Если письмо не пришло, поищите его в папке со спамом или повторите подписку

email-checked.png

Вы подписались на рассылку

Как будет оформлено обучение?

Оплачивать будет:

Спасибо за обращение! Ваш менеджер свяжется с Вами в течение нескольких минут.