27_SH43-0144-00 (1038594), страница 48
Текст из файла (страница 48)
Дополнительную информацию о том, как это сделать, смотрите вруководстве SQL Reference.Пользовательскую функцию нельзя отбросить, если от нее зависит производнаятаблица, триггер, проверочное ограничение таблицы или другаяпользовательская функция. Нельзя отбросить функции, неявно созданныеоператором CREATE DISTINCT TYPE. Нельзя отбросить функции из схемыSYSIBM или SYSFUN.От функции или шаблона функции могут зависеть другие объекты.
Чтобыможно было отбросить функцию, необходимо сначала удалить все такиезависимости, включая отображения функций (за исключением пакетов, которыеотмечаются как неработоспособные). Для таких пакетов не выполняется неявноесвязывание. Нужно выполнить для них связывание, используя команды BINDили REBIND, или же подготовить их, используя команду PREP.Дополнительную информацию об этих командах смотрите в руководствеCommand Reference.
При отбрасывании пользовательской функции делаютсянедействительными все использующие ее пакеты или кэшируемые динамическиеоператоры SQL.При отбрасывании отображения функции пакет отмечается какнедействительный. Повторное связывание выполняется автоматически иоптимизатор пытается использовать локальную функцию. Если локальнаяфункция - это шаблон, неявное повторное связывание не будет выполнено.(Дополнительную информацию смотрите в разделе “Зависимости операторовпри изменении объектов” на стр. 221.)Глава 4. Изменение базы данных213Отбрасывание пользовательского типа или отображения типовС помощью оператора DROP можно отбросить пользовательский тип илиотображение типов.
Нельзя отбросить пользовательский тип, если ониспользуется:v В определении столбца существующей таблицы или производной таблицы(особые типы)v В качестве типа существующей типизированной таблицы или типизированнойпроизводной таблицы (структурированный тип)v В качестве надтипа другого структурированного типаНельзя отбросить отображение типов по умолчанию; его можно толькопереопределить, создав другое отображение типов.Менеджер баз данных пытается отбросить все функции, зависящие от этогоособого типа.
Если такую пользовательскую функцию нельзя отбросить, нельзяотбросить и данный пользовательский тип. Пользовательскую функцию нельзяотбросить, если от нее зависит производная таблица, триггер, проверочноеограничение таблицы или другая пользовательская функция. При отбрасываниипользовательского типа становятся недействительными все использующие егопакеты или кэшируемые динамические операторы SQL.|||||||Если для пользовательского типа создано преобразование и вы собираетесьотбросить этот тип, возможно, следует отбросить это преобразование. Дляэтого используется оператор DROP TRANSFORM.
Подробное описание этогооператора смотрите в руководстве SQL Reference. Учтите, что можно отброситьтолько преобразования, определенные вами или другими разработчикамиприкладных программ; встроенные преобразования и связанные с нимиопределения групп нельзя отбросить.Дополнительную информацию о пользовательских типах смотрите вруководствах SQL Reference и Application Development Guide.Изменение или отбрасывание производной таблицыС помощью оператора ALTER VIEW можно изменить существующуюпроизводную таблицу, изменив столбец ссылочного типа, чтобы задать для негообласть видимости.
Для внесения в производную таблицу любых другихизменений необходимо ее отбросить и затем создать заново.При изменении производной таблицы область видимости можно задаватьтолько для существующего столбца ссылочного типа, для которого областьвидимости еще не определена. Кроме того, этот столбец не долженнаследоваться от производной надтаблицы.214Руководство администратора: РеализацияСтолбец, имя которого задано в операторе ALTER VIEW, должен иметь типданных REF (тип, содержащий имя типизированной таблицы или имятипизированной производной таблицы).||||Эта операция не влияет на другие объекты базы данных, такие как таблицы ииндексы, но зависимые пакеты и кэшируемые динамические операторыотмечаются как недействительные.
Дополнительную информацию смотрите вразделе “Зависимости операторов при изменении объектов” на стр. 221.Дополнительную информацию об операторе ALTER VIEW смотрите вруководстве SQL Reference.|Чтобы изменить производную таблицу с помощью Центра управления:1. Раскройте дерево объектов и найдите папку Производные таблицы.2.
Щелкните правой кнопкой по производной таблице, которую нужно изменить, ивыберите из всплывающего меню пункт Изменить.3. В окне Изменить производную таблицу введите или измените комментарий инажмите кнопку OK.|Чтобы отбросить производную таблицу с помощью Центра управления:1. Раскройте дерево объектов и найдите папку Производные таблицы.2. Щелкните правой кнопкой мыши по производной таблице, которую нужноотбросить, и выберите из всплывающего меню пункт Отбросить.3. Включите переключатель Подтверждение и нажмите кнопку OK.||Чтобы отбросить производную таблицу из командной строки, введите команду:DROP VIEW <имя_производной_таблицы>В следующем примере показано, как отбросить производную таблицуEMP_VIEW:DROP VIEW EMP_VIEWВсе производные таблицы, зависящие от отбрасываемой производной таблицы,становятся неработоспособными.
(Дополнительную информацию смотрите вразделе “Восстановление неработоспособных производных таблиц” на стр. 216.)Как и в случае иерархии таблиц, можно отбросить всю иерархию производныхтаблиц с помощью одного оператора, задав в нем имя корневой производнойтаблицы этой иерархии, как показано в следующем примере:DROP VIEW HIERARCHY VPersonГлава 4. Изменение базы данных215Дополнительную информацию об отбрасывании и создании производныхтаблиц смотрите в руководстве SQL Reference.Восстановление неработоспособных производных таблицПроизводные таблицы могут стать неработоспособными в результате отзывапривилегии SELECT для базовой таблицы.Следующие шаги помогают восстановить неработоспособную производнуютаблицу:v Узнайте оператор SQL, который использовался для создания этойпроизводной таблицы.
Эту информацию можно получить из столбца TEXTпроизводной таблицы каталога SYSCAT.VIEW.v Заново создайте эту производную таблицу с помощью оператора CREATEVIEW с тем же именем и тем же определением производной таблицы.v Используйте оператор GRANT, чтобы вновь предоставить все привилегии,которые были ранее предоставлены для этой производной таблицы. (Учтите,что все привилегии, предоставленные для неработоспособной производнойтаблицы, отменяются.)Если неработоспособную производную таблицу не нужно восстанавливать,можно явно отбросить ее с помощью оператора DROP VIEW или же создатьновую производную таблицу с тем же именем, но с другим определением.Для неработоспособной производной таблицы сохраняются только записи впроизводных таблицах каталога SYSCAT.TABLES и SYSCAT.VIEWS; все записив производных таблицах каталога SYSCAT.VIEWDEP, SYSCAT.TABAUTH,SYSCAT.COLUMNS и SYSCAT.COLAUTH удаляются.Отбрасывание сводной таблицыСводную таблицу нельзя изменить, но ее можно отбросить.При этом будут отброшены все индексы, первичные ключи, внешние ключи ипроверочные ограничения для этой таблицы.
Все производные таблицы итриггеры, ссылающие на эту таблицу, становятся неработоспособными. Всепакеты, зависящие от каких-либо отброшенных или отмеченных какнеработоспособные объектов, становятся недействительными. Дополнительнуюинформацию о зависимостях пакетов смотрите в разделе “Зависимостиоператоров при изменении объектов” на стр. 221.Чтобы отбросить сводную таблицу с помощью Центра управления:|1.
Раскройте дерево объектов и найдите папку Таблицы.2. Щелкните правой кнопкой мыши по сводной таблице, которую нужно отбросить, ивыберите из всплывающего меню пункт Отбросить.3. Включите переключатель Подтверждение и нажмите кнопку OK.216Руководство администратора: Реализация||Чтобы отбросить сводную таблицу из командной строки, введите команду:DROP TABLE <имя_таблицы>Следующий оператор SQL отбрасывает сводную таблицу XT:DROP TABLE XTВосстановление неработоспособных сводных таблицСводные таблицы могут стать неработоспособными в результате отзывапривилегии SELECT для базовой таблицы.Следующие шаги помогают восстановить неработоспособную своднуютаблицу:v Узнайте оператор SQL, который использовался для создания этой своднойтаблицы.