- •Автор: Заставной д.А., преподаватель кафедры информатики и информационных таможенных технологий Ростовского филиала рта, к.Т.Н.
- •Оглавление
- •Раздел 1. Объекты базы данных
- •Раздел 2. Создание таблиц
- •2.1. Общие сведения
- •2.2. Типы значений
- •2.3. Значение по умолчанию
- •2.4. Ограничения
- •2.5. Создание таблиц при помощи команды select
- •2.6. Изменение определения таблицы
- •Alter table "Все заказы(кп)"
- •Alter table "Клиент(кп)" add constraint "Клиент(кп)_ф_с"
- •Alter table "Клиент(кп)"
- •Раздел 3. Последовательности
- •Раздел 4. Синонимы
- •Раздел 5. Представления
- •Раздел 6. Индексы
- •Explain plan
- •Раздел 7. Системный каталог
- •Заключение
- •Библиографический список
- •Указатели
- •Раздел 1. Объекты базы данных 5
- •Раздел 2. Создание таблиц 6
- •Раздел 3. Последовательности 33
Alter table "Клиент(кп)"
DROP ("Имя") CASCADE CONSTRAINTS
Этот вариант команды позволяет удалить поле вместе со всеми наложенными на него ограничениями.
9. Изменение имени ограничения
ALTER TABLE "Клиент(кп)"
RENAME CONSTRAINT "Клиент(кп)_ТТ_С" TO
"Клиент(кп)_ТТ_Сheck"
(предполагается, что ограничение "Клиент(кп)_ТТ_С" уже создано).
10. Отключение ограничения
ALTER TABLE "Клиент(кп)"
MODIFY CONSTRAINT "Клиент(кп)_ТТ_Сheck"
DISABLE
Указанное ограничения остается в схеме базы данных, но его условие более не проверяется при модификации данных. Отключенные ораничения можно вновь включить, используя опцию modify … enable; при этом будет предварительно выполнена проверка всех записей.
11. Удаление ограничения
ALTER TABLE "Клиент(кп)"
DROP CONSTRAINT "Клиент(кп)_ТТ_Сheck"
2.7. Удаление таблиц
Для удаления SQL-таблиц используется команда DROP TABLE, например:
DROP TABLE "Клиент(кп)"
При удалении таблицы происходят следующие действия:
удаляются все строки таблицы;
из системного каталога удаляется определение таблицы;
Удаляются все связанные с этой таблицей объекты, а именно: ограничения, индексы и триггеры.
Кроме того, из системного словаря удаляются все настройки прав доступа пользователей на удаленную таблицу.
Таким образом, удаление таблицы при помощи команды DROP TABLE является в значительной степени радикальной мерой, к которой следует прибегать, принимая во внимание ее последствия.
Таблица по умолчанию не может быть удалена, если ее поля использованы в существующих ограничениях FOREIGN KEY других таблиц. Для игнорирования данного правила следует использовать следующий вариант команды:
DROP TABLE "Клиент(кп)" CASCADE CONSTRAINTS
Интересным вопросом является, что же происходит с данными после удаления таблицы. В ранних версиях Oracle удаление таблицы было необратимым действием; единственным способом восстановления данных было восстановление базы данных с резервных копий. В современной системе поддерживается понятие корзины, в которую помещаются удаленные объекты базы данных и из которой эти объекты можно при необходимости восстановить.
Рассмотрим следующую последовательность команд, иллюстрирующих работу с корзиной:
CREATE TABLE ToDrop
( aaa NUMBER UNIQUE,
bbb CHAR(20) );
- создание некоторой таблицы
DROP TABLE ToDrop
- удаление таблицы
SELECT OBJECT_NAME, ORIGINAL_NAME, OPERATION,
TYPE, CAN_UNDROP
FROM RECYCLEBIN
- просмотр содержимого корзины, информация о которой содержится в специальной таблице RECYCLEBIN, после команды удаления:
OBJECT_NAME |
ORIGINAL_NAME |
OPERATION |
TYPE |
CAN_UNDROP |
BIN$RNddS4U3QZWepxPrpwXy6Q==$0 |
SYS_C0010464 |
DROP |
INDEX |
NO |
BIN$D/N6f2YwS8G6sNmhbzTucg==$0 |
TODROP |
DROP |
TABLE |
YES |
В корзине находятся два объекта – сама таблица и индекс, созданный для поля aaa, на которое наложено ограничение уникальности; таблицу можно восстановить.
FLASHBACK TABLE ToDrop TO BEFORE DROP
- восстановаление таблицы из корзины, однако индекс востановлен не будет. Теперь корзина пуста, а таблица восстановлена и может использоваться в запросах; индекс же необходимо создать заново.
Если необходимо удалить таблицу без помещения ее предварительно в корзину, следует использовать следующий вариант:
DROP TABLE ToDrop PURGE
Для очистки корзины можно вопользоваться командой PURGE RECYCLEBIN.
Команда FLASHBACK TABLE может использоваться и для восстновления таблицы к состоянию в некотрый момент времени. Однако восстновление объектов из корзины возможно не всегда; это связано с подробностями настройки сервера. Для более детального и полного описания работы с корзиной следует обращаться к документации.