Інструкції DROP - SQL програмування

Зміст

Всі об'єкти бази даних, створені за допомогою інструкцій CREATE, можна знищити за допомогою відповідних інструкцій DROP. На деяких платформах після видалення можна відновити об'єкт командою ROLLBACK. Однак на інших платформах інструкція DROP є незворотною та остаточною, тому цю команду слід застосовувати обережно.

Синтаксис SQL 2003

В даний час стандарт SQL 2003 підтримує можливість видалення багатьох типів об'єктів, багато з яких не підтримуються більшістю виробників. Синтаксис ANSI SQL 2003 має такий формат.

Видалення не виконується, якщо існують залежні об'єкти (RESTRICT) або всі залежні об'єкти також видаляються (CASCADE). Ця пропозиція не використовується з деякими формами інструкції DROP, наприклад DROP TRIGGER, але для інших вона є обов'язковою, наприклад для DROP SCHEMA. Пояснимо. Інструкція DROP SCHEMA RESTRICT може видалити лише порожню схему. Якщо схема містить об'єкти, операція не буде виконана. І навпаки, інструкція DROP SCHEMA CASCADE видалить і схему, і всі об'єкти, що містяться в ній.

Загальні правила

Правила створення або зміни кожного типу об'єктів наведено в описах відповідних інструкцій CREATE/ALTER.

Інструкція DROP знищує існуючий об'єкт. Об'єкт видаляється остаточно, і всі об'єкти, що зверталися до об'єкта, негайно втрачають доступ.

Об'єкт може бути кваліфікованим, тобто ви можете повністю вказати схему, в якій розташований об'єкт, що видаляється. Наприклад:

DROP TABLE scott.sales_2004 CASCADE;

Наведена вище інструкція не тільки видалить таблицю scott.sales_2004, але також видалить усі уявлення, тригери та обмеження, створені наїї основу. З іншого боку, інструкція DROP може містити некваліфіковане ім'я об'єкта, і тоді мається на увазі контекст поточної схеми. Наприклад:

DROP TRIGGER before_ins_emp; DROP ROLE sales_mgr;

У більшості реалізацій команда DROP не буде виконана, якщо об'єкт бази даних використовує інший користувач (хоча це не рекомендується стандартом SQL 2003).

Поради та хитрощі програмування

Інструкція DROP працює лише стосовно існуючого об'єкта відповідного типу, до якого користувач має відповідні права доступу, зазвичай права DROP TABLE. (За додатковою інформацією звертайтеся до розділу «Інструкція GRANT».) Стандарт вимагає, щоб об'єкт міг видаляти лише його власник, але у більшості платформ у цьому питанні допускаються варіанти. Наприклад, суперкористувач бази даних зазвичай може видалити будь-який об'єкт на сервері бази.

У деяких виробників команда DROP створює помилку, якщо об'єкт бази даних має розширені властивості. Наприклад, Microsoft SQL Server не видаляє таблицю, що реплікується, доки ви не виключите її з реплікації.

Важливо знати, що більшість виробників не повідомляють вас про те, що команда DROP викликала проблему, пов'язану із залежностями. Так. якщо таблиця, яка використовується десь у базі даних декількома поданнями та записаними процедурами, видаляється, жодних попереджень не виводиться. Ці інші об'єкти будуть просто видавати помилки під час доступу до них. Щоб уникнути цього, ви можете використовувати синтаксичну конструкцію RESTRICT у потрібному місці.

Ви, мабуть, помітили, що стандарт ANSI не підтримує деякі поширені команди DROP, такі, як DROP DATABASE або DROP INDEX, хоча платформи всіх виробників, описані в ційКнига підтримує ці команди. Точний синтаксис кожної з цих команд описується нижче, у розділах, присвячених різним платформам.

Додаткова інформація на тему

Правила та методи використання інструкції OPEN у базах даних на різних платформах

Правила та методи використання інструкції REVOKE у базах даних на різних платформах

Правила та методи використання інструкції MERGE у базах даних на різних платформах

Правила та методи використання інструкції ROLLBACK у базах даних на різних платформах