Удаление таблицы
Функция
Определение оператора удаления таблицы.
Спецификация
::=
Синтаксические правила
-
< Имя таблицы >
должно задавать базовую таблицу. -
При удалении таблицы, созданной в текущей схеме, допускается не указывать
< имя схемы >
.DROP TABLE Auto; DROP TABLE System.Auto;
Общие правила
-
Удалить таблицу может только ее владелец. Администратор БД имеет возможность удалить одновременно все объекты некоторого пользователя с помощью команды
DROP USER < имя пользователя > CASCADE
. -
Удалить можно только незаблокированную таблицу (т.е. такую таблицу, с которой в данный момент не работают другие пользователи).
-
При запуске СУБД ЛИНТЕР с ключом
/COMPATIBILITY=STANDARD
запрещается обычное удаление таблицы, на которую ссылаются представления (VIEW). При этом на консоль ядра СУБД и в файлlinter.out
выдаётся список объектов, ссылающихся на удаляемый объект и не позволяющих его удалить. Пример списка:INFO Can't delete relation '"SYSTEM"."TEST1" (#187)' because exists reference(s): "SYSTEM"."TESTV" (#188) "SYSTEM"."TESTV2" (#190)
-
Каскадное удаление таблицы, на которую ссылаются представления (VIEW), разрешено всегда.
-
Если на удаляемую таблицу наложено ограничение целостности
ON DELETE CASCADE
, то удаление таблицы возможно только после предварительного удаления всех ссылающихся на нее таблиц. Если задан модификаторCASCADE
, ссылки на таблицу удаляются автоматически. -
Удаление системных таблиц запрещено.
-
Если создана таблица с именем, совпадающим с именем системной таблицы, но с другой структурой, то ее можно удалить.
create user S identified by '12345678'; grant DBA to S; create table $$$SYSRL (I int); insert into $$$SYSRL values (100); drop table $$$SYSRL;
-
При удалении таблицы связанные с нею хранимые события не удаляются.
-
Для удаления хранимых событий при удалении таблицы необходимо в команде удаления таблицы указать опцию
cascade
:drop table < имя таблицы > cascade;
-
Одновременно с удалением таблицы, для которой создано правило репликации, удаляется и само правило.
-
При каскадном удалении таблицы удаляется и связанное с ней глобальное (хранимое) событие.