Контекст подавления идентификации сервера SQL - PullRequest
4 голосов
/ 02 марта 2012

Используя SQL Server 2008 R2, у меня есть таблица Users, в которой я хотел бы зарезервировать 99 лучших значений ID для пользователей системы с ручным вводом.Я установил для моего идентификатора 100 значение, чтобы всем новым пользователям было присвоено значение 100+ в обычном режиме.Я обнаружил, что могу использовать SET IDENTITY_INSERT для подавления спецификации идентификатора и предоставления явного значения для этого столбца.Что мне нужно знать, и что я не могу понять из MSDN, так это то, будет ли это подавление только применяться к контексту запущенного скрипта.(т. е. новым пользователям, созданным на сайте, вызывающим обычную процедуру вставки, по-прежнему будет предоставлен автоматически сгенерированный идентификатор следующего значения> 100)

1 Ответ

6 голосов
/ 02 марта 2012

SET IDENTITY_INSERT позволяет напрямую вставлять значение идентификатора, для него не требуется . Таким образом, даже если бы это был общий параметр, при запуске «нормальной» INSERT автоматически генерировалась идентификация.

Тем не менее, это также настройка для каждой сессии, так что вы вдвойне в безопасности.

Что касается дизайна - я сделал подобное, и не вижу проблемы с ним. Наличие «общеизвестных» идентификаторов довольно распространено - хотя вам придется решить, является ли 100 подходящим блоком для резервирования. Хотя это возможно, вы действительно не хотите открывать несмежный блок позднее. Я использовал отрицательные числа в прошлом, когда не было зарезервированного диапазона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...