Создание идентификационного поля для уникальной идентификации записей
Создание идентификационного поля для уникальной идентификации записей
Полезно, но не обязательно, для каждой записи иметь информацию, которая будет уникально идентифицировать ее. Часто этот уникальный идентификатор не имеет ничего общего с бизнес-данными. В SQL Server можно создавать идентификационное поле, аналогичное полю AutoNumber в базах данных Microsoft Jet. При создании каждой записи ей автоматически присваивается уникальное числовое значение в идентификационном поле.
Идентификационное поле в SQL Server отличается от поля AutoNumber в Microsoft Jet и обладает следующими возможностями:
• любой числовой тип данных (в Jet оно может иметь тип только длинного целого числа);
• увеличение своего значения на любое определенное число (в Jet это может быть либо единица, либо случайное значение);
• нумерация с любого значения (в Jet нумерация может начинаться только с 1);
• восстановление значений; это позволяет вставить специфическое число в уникальное поле для восстановления записи, которая, например, была случайно удалена (в Jet уникальное поле всегда доступно только для чтения).
Идентификационное поле в SQL Server обладает меньшей гибкостью, чем поле AutoNumber в Jet: если вы собираетесь создать идентификационное поле, то должны сделать это при создании таблицы. Это происходит из-за того, что в SQL Server допускается позднее создание полей, содержащих неопределенные значения, а поля, не содержащие неопределенных значений, могут быть созданы только во время создания таблицы.
Чтобы создать идентификационное поле с помощью программы SQL Server Enterprise Manager, выполните ряд действий.
1. В окне конструктора таблицы Design Table создайте новое поле ID. Выберите для него тип данных int. Помните, что этот тип данных имеет размер четыре байта, подобно типу данных Integer в Visual Basic .NET.
2. Снимите флажок в столбце Allow Nulls. Это значит, что в данном поле не допускаются неопределенные значения и оно наилучшим образом подходит для превращения в идентификационное.
3. Нижняя часть диалогового окна Design Table содержит страницу свойств для свойств текущего выбранного поля в таблице. Щелкните в странице свойств на текстовом поле Identity.
4. Выберите в нем параметр Yes. По желанию укажите значения в текстовых полях Identity Seed (Начальное значение) и Identity Increment (Приращение).
После создания идентификационного поля окно SQL Server Enterprise Manager будет выглядеть, как на рис. 3.11.
Помните, что значения идентификационного поля в SQL Server не всегда последовательны. Например, если пользователь Антон пытается создать запись с ID, равным 101, а пользователь Степан создает следующую запись (ее ID равен 102) и транзакция Антона не будет выполнена, то запись с номером 101 не будет создана никогда.
В этом ничего страшного нет, особенно в том случае, когда в приложениях значение первичного ключа не используется пользователем. Однако помните, что такие "потерянные" значения возможны, так что не удивляйтесь, если, например, при просмотре номеров счетов вы не обнаружите счета с номером 101.
РИС. 3.11. Создание идентификационного поля в диалоговом окне конструктора таблиц Design Table программы SQL Server Enterprise Manager