Необязательное предложение CASCADE CONSTRAINTS
Необязательное предложение CASCADE CONSTRAINTS позволяет удалить таблицу вместе со всеми ее ограничениями ссылочной целостности. При отсутствии этого предложения и наличии в таблице ограничений ссылочной целостности Oracle сгенерирует ошибку, и таблица удалена не будет.
Ошибка в данном случае была вызвана тем, что на таблицу CUSTOMER ссылаются таблицы ADDRESS, PHONE и ORDER_HEADER (ограничения FK_ADDR_CUST, FK_PHONE_CUST и FK_ORD — HDR_CUSTOMER). Для удаления этой таблицы и перечисленных ограничений следовало бы использовать такую DB2 9.5 В DB2 синтаксис инструкции удаления таблицы следующий. В дополнение ко всем уже упомянутым объектам (индексам, триггерам и ограничениям), вместе с таблицей удаляются и все сводные таблицы, на нее ссылающиеся, а также все соответствующие ограничения ссылочной целостности. Такое непростительное поведение СУБД может стать причиной непреднамеренной потери данных, так что будьте предельно бдительны при удалении таблиц в DB2.
В отличие от Oracle, Microsoft SQL Server не позволяет удалять таблицу, на столбцы которой существуют ссылки внешних ключей, так что в данном случае придется предварительно удалять ограничения ссылочной целостности. В качестве альтернативы можно в одной инструкции DROP удалить и ссылки, и саму таблицу; при этом таблица в инструкции должна быть упомянута первой. Индексы невидимы большинству пользователей базы данных, поэтому обычно потребность в их изменении не возникает. Иногда проще удалить индекс и создать вместо него другой, чем изменить существующий. Для удаления индексов используется инструкция DROP INDEX. Так как эта инструкция вообще не входит в стандарт SQL:2003, каждый из производителей СУБД реализовал ее по-своему. Не будем сильно углубляться в детали инструкции ALTER INDEX; за получением дополнительной информации лучше обратиться к документации Oracle. Сконцентрируем внимание только на нескольких предложениях, которые касаются тематики настоящей книги.