Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП СУБД Ч.2.doc
Скачиваний:
17
Добавлен:
11.06.2015
Размер:
546 Кб
Скачать
☆

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 "Клиент(кп)"

При удалении таблицы происходят следующие действия:

  1. удаляются все строки таблицы;

  2. из системного каталога удаляется определение таблицы;

  3. Удаляются все связанные с этой таблицей объекты, а именно: ограничения, индексы и триггеры.

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

Таким образом, удаление таблицы при помощи команды 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 может использоваться и для восстновления таблицы к состоянию в некотрый момент времени. Однако восстновление объектов из корзины возможно не всегда; это связано с подробностями настройки сервера. Для более детального и полного описания работы с корзиной следует обращаться к документации.