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

Глобальные временные таблицы имеют имена, начинающиеся с символа ##, доступны всем пользователям, подключенным к серверу, и могут быть удалены с помощью оператора DROP TABLE. Если глобальная временная таблица не удалена одним из пользователей, то она удалится автоматически при отключении всех пользователей, которые работали с этой таблицей. Если таблица использовалась только создавшим ее пользователем, то она будет удалена сразу после его отключения. Обычно глобальные временные таблицы применяются для обмена данными между несколькими сеансами.

 

Удаление таблиц

 

Таблицу можно удалить с помощью оператора DROP TABLE. Проблема с удалением таблицы может быть в трех следующих случаях.

1. Пользователь не имеет достаточных прав на удаление таблицы.

2. Таблица заблокирована транзакцией другого сеанса.

3. На первичный ключ удаляемой таблицы ссылается внешний ключ другой таблицы.

В первом случае выполняющий удаление таблицы пользователь должен быть наделен соответствующим разрешением (permission) с помощью оператора GRANT или должен быть включен в одну из системных фиксированных ролей БД.

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

Если существуют таблицы с внешними ключами, ссылающимися на удаляемую таблицу, то предварительно необходимо модифицировать (с помощью оператора ALTER TABLE удалить соответствующее ограничение FOREIGN KEY) или удалить эти таблицы.

На рис. 5.81 представлена диаграмма логической схемы БД BSTU. Прямоугольники обозначают таблицы БД, линии – соединяющие их связи между внешними и первичными ключами. Со стороны внешнего ключа изображен символ бесконечности, со стороны первичного ключа – ключ. Попытка удаления таблицы FACULTY приведет к ошибке (рис. 5.82), т. к. на ее первичный ключ ссылаются вторичные ключи таблиц PULPIT, GROUPS и PROFESSION. Правильная последовательность удаления таблиц БД BSTU представлена на рис. 5.83.

 

 

Рис. 5.81. Логическая схема БД BSTU

 

 

Рис. 5.82. Сообщение об ошибке при попытке удаления связанной таблицы

 

 

Рис. 5.83. Правильная последовательность удаления таблиц БД BSTU

 

Модификация таблиц

Под модификацией таблицы подразумевается изменение ее структуры: добавление или удаление столбцов, добавление или удаление ограничений, изменение точности или типа числовых данных, размерности символьных данных и т. п. В простейшем случае можно просто удалить (DROP TABLE) и создать ее (CREATE TABLE) с новой структурой. Но такой путь бывает не всегда рациональным, особенно, если для работы с таблицей уже распределены права доступа или таблица содержит значительные объемы данных. Следует помнить, что не всякая модификация таблицы сохраняет данные в таблице.

Перед модификацией таблицы целесообразно ознакомиться с ее структурой. Обычно для этого применяют системную процедуру SP_ HELP, при вызове которой указывают в качестве параметра имя исследуемой таблицы (рис. 5.84).

 

 

Рис. 5.84. Фрагмент результата работы системной процедуры SP_ HELP

Во втором результирующем наборе вывода системной процедуры SP_ HELP (рис. 5.84) можно выяснить, что столбец TEACHER_ NAME (Column_name) таблицы TEACHER имеет тип VARCHAR(100) (Type, Length) и допускает значение NULL (Nullable).

В третьем результирующем наборе вывода системной процедуры SP_ HELP перечислены все ограничения (constraint_type, constraint_name), установленные для таблицы TEACHER.

На рис. 5.85 показана часть строк содержимого таблицы TEACHER. Последний столбец результирующего набора указывает размер данных в столбце TEACHER_ NAME каждой строки таблицы.

 

Рис. 5.85. Содержимое таблицы TEACHER

На рис. 5.86 представлен сценарий, изменяющий структуру таблицы TEACHER. Первый оператор ALTER изменяет существующий столбец TEACHER_ NAME: уменьшает максимальный размер столбца до 50 символов и добавляет ограничение NOT NULL. Второй оператор добавляет новый столбец с именем BDATE типа DATE, не допускающий значений NULL и с заданным значением по умолчанию.

 

 

Рис. 5.86. Модификация таблицы TEACHER

 

На рис. 5.87 отображен результат SELECT-запроса к таблице TEACHER после ее модификации с помощью сценария на рис. 5.86. Сравнив рис. 5.85 и 5.87 не сложно заметить, что в таблице появился новый столбец с именем BDATE, полостью заполненный значением по умолчанию, а значения остальных столбцов не изменились. Обратим внимание на то, что значения в столбце GENDER равны NULL.

 

 

Рис. 5.87. Содержимое таблицы TEACHER после ее модификации
с помощью сценария на рис. 5.86

 

На рис. 5.88 демонстрируется изменение свойства столбца GENDER: запрещается значение NULL.

 

 

Рис. 5.88. Сообщение об ошибке при изменении свойства
столбца GENDER таблицы TEACHER

 

Попытка установить свойство, запрещающее значения NULL в столбце GENDER, приводит к ошибке из-за того, что среди строк таблицы TEACHER уже есть такие, которые содержат значение NULL. В этом случае необходимо предварительно изменить все NULL-значения на какое-нибудь допустимое значение (рис. 5.89).

 

 

Рис. 5.89. Замена недопустимых значений в столбце GENDER
 на допустимое значение и модификация таблицы

 

Для более полного знакомства с возможностями оператора ALTER TABLE рекомендуется обратиться к источнику [5].

 




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