Свойство IDENTITY столбца таблицы
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Процесс нормализации таблиц приводит к вертикальному делению одной таблицы на несколько. При этом для обеспечения нормальной формы новых таблиц иногда приходится прибегать к суррогатным ключам.

Суррогатный ключ – это дополнительный столбец, добавленный к уже имеющимся столбцам таблицы и предназначенный служить первичным ключом.

СУБД Microsoft SQL Server 2008 позволяет создавать столбцы с автоматически формируемым целочисленным уникальным значением. На рис. 5.72 представлен сценарий создания таблицы GROUPS.

 

 

Рис. 5.72. Применение свойства IDENTITY

 

Для столбца IDGROUP задано свойство IDENTITY, указывающее на необходимость автоматического формирования целочисленного значения в этом столбце при выполнении оператора INSERT. Свойство IDENTITY имеет два параметра, которые указываются в скобках после ключевого слова IDENTITY. Первый параметр задает стартовое значение идентификатора, второй – приращение. Попытка явно ввести значение в столбец со свойством IDENTITY с помощью INSERT приводит к ошибке (рис. 5.73, 5.74).

 

 

Рис. 5.73. Сообщение о попытке явного ввода значения в столбец
 со свойством IDENTITY

 

 

Рис. 5.74. Результат SELECT-запроса из сценария на рис. 5.72

 

Попытка выполнить корректировку значения в столбце, имеющем свойство IDENTITY, приводит к ошибке с кодом компиляции 8102.

 

 

Рис. 5.75. Сообщение об ошибке, формируемое при попытке выполнить оператор UPDATE применительно к столбцу со свойством IDENTITY

 


Вычисляемые столбцы

Столбец таблицы БД, значение которого может быть вычислено как выражение, содержащее в качестве аргументов другие столбцы таблицы, константы, вызовы встроенных функций и пр., называется вычисляемым.

Если для вычисляемого столбца не указано свойство PERSISTED, то значения такого столбца физически не хранятся в таблице, а вычисляются каждый раз при обращении к нему. Такие столбцы называются виртуальными.

В некоторых случаях (например, при создании индекса по вычисляемому столбцу) свойство PERSISTED является обязательным, оно обеспечивает физическое хранение в таблице вычисленного значения. Свойство PERSISTED к выражению вычисляемого столбца предъявляет требование детерминистичности. Детерминистическое выражение – выражение, значение которого всегда одинаково для каждой комбинации значений аргументов. Другими словами, значение функции не зависит от времени.

В дальнейшем рассматриваются только виртуальные столбцы. Для знакомства с возможностями, которые предоставляют вычисляемые PERSISTED-столбцы, рекомендуется изучить пособия [3, 5].

На рис. 5.76 представлен сценарий создания таблицы GROUPS, содержащей виртуальный вычисляемый столбец с именем COURSE.

 

 

Рис. 5.76. Пример использования виртуального вычисляемого столбца

 

Описание вычисляемого столбца состоит из двух частей: имени и выражения, стоящего после ключевого слова AS. Результат SELECT-запроса, выполненного в рамках сценария на рис. 5.76, представлен на рис. 5.77. Обратите внимание на выводимые значения в вычисляемом виртуальном столбце COURSE.

 

 

Рис. 5.77. Результат SELECT-запроса из сценария на рис. 5.77

 

Если ввести вычисляемое значение (с помощью INSERT) или изменить (c помощью UPDATE), то это вызовет ошибку (рис. 5.78).

 

 

Рис. 5.78. Сообщение об ошибке при попытке добавить или откорректировать
 вычисляемое значение

 


Временные таблицы

 

Основное отличие временных таблиц от постоянных в том, что они хранятся в системной БД TEMPDB и не могут иметь внешние ключи. Как правило, временные таблицы создаются для временного хранения результатов SELECT-запросов. При применении временных таблиц следует помнить, что БД TEMPDB снова создается при каждом перезапуске сервера, поэтому сохранить или восстановить временную таблицу в случае сбоя, приведшего к перезапуску сервера СУБД, невозможно.

Существует два вида временных таблиц: локальные и глобальные. Они отличаются друг от друга форматом имени, областью видимости и жизненным циклом.

 

Локальные временные таблицы

Локальные временные таблицы имеют имена, начинающиеся с символа #, доступны только создавшему ее пользователю и могут быть удалены с помощью оператора DROP TABLE. Если пользователь временную таблицу не удалил сам, то она удалится автоматически при его отключении. На рис. 5.79 и 5.80 приведен пример, демонстрирующий создание, использование и удаление локальной временной таблицы с именем # TEACHER.

 

 

Рис. 5.79. Пример использования локальной временной таблицы

 

 

Рис. 5.80. Результат выполнения SELECT-запроса в сценарии на рис. 5.79

 

Следует обратить внимание: несмотря на то, что временная таблица # TEACHER создается в контексте БД BSTU (оператор USE), размещена она будет в системной базе данных TEMPDB.

Как правило, локальные временные таблицы применяются для временного хранения результатов трудоемких SELECT-запросов.

 

Дата: 2019-02-25, просмотров: 251.