27_SH43-0144-00 (1038594), страница 47
Текст из файла (страница 47)
При таком изменении полная выборка в определениисводной таблицы должна совпадать с определением оригинальной таблицы, тоесть:v Должно совпадать число столбцов.v Должны совпадать имена и позиции столбцов.|v Должны совпадать типы данных.||||||Если для исходной таблицы определена сводная таблица, ее нельзяпреобразовать в сводную таблицу. Если исходная таблица имеет триггеры,проверочные ограничения, реляционные ограничения или определенныеуникальные индексы, ее нельзя преобразовать в сводную таблицу. Изменяясвойства таблицы, чтобы определить сводную таблицу, нельзя в этом жеоператоре ALTER TABLE еще как-то изменять эту таблицу.|||При преобразовании обычной таблицы в сводную полная выборка вопределении сводной таблицы не должна ссылаться на исходную таблицу прямоили косвенно через производные таблицы, алиасы или сводные таблицы.|||Чтобы изменить сводную таблицу в обычную, используйте оператор:|||Чтобы изменить обычную таблицу в сводную, используйте оператор:|||Ограничения на полную выборку при преобразовании обычной таблицы всводную очень близки к ограничениям при создании сводной таблицы спомощью оператора CREATE SUMMARY TABLE.||Дополнительную информацию об операторе CREATE SUMMARY TABLEсмотрите в руководстве SQL Reference.|||||Обновление данных в сводной таблицеС помощью оператора REFRESH TABLE можно обновить данные в одной илинескольких сводных таблицах.
Этот оператор может быть встроен вприкладную программу или выполняться динамически. Для выполнения этогооператора необходимо обладать полномочиями SYSADM или DBADM илипривилегией CONTROL для обновляемой таблицы.ALTER TABLE сводная_таблицаSET SUMMARY AS DEFINITION ONLYALTER TABLE обычная_таблицаSET SUMMARY AS <полная_выборка>В следующем примере показано, как обновить данные в сводной таблице:REFRESH TABLE SUMTAB1208Руководство администратора: РеализацияДополнительную информацию об операторе REFRESH TABLE смотрите вруководстве SQL Reference.Изменение пользовательского структурированного типа|||||После создания структурированного типа может потребоваться добавление илиудаление атрибутов этого структурированного типа.
Для этого используетсяоператор ALTER TYPE (структурированный). Всю необходимую информацию оструктурированных типах можно найти в руководстве Application DevelopmentGuide.Удаление или изменение строк в типизированной таблице|||||Строки типизированных таблиц можно удалить, используя операторы DELETEс поиском или с указателями. Строки типизированных таблиц можно изменить,используя операторы UPDATE с поиском или с указателями. Всю необходимуюинформацию о типизированных таблицах можно найти в руководствеApplication Development Guide.Переименование существующей таблицыСуществующей таблице можно дать новое имя в схеме, сохранив полномочия ииндексы, созданные для исходной таблицы.Существующая таблица, которую нужно переименовать, может задаватьсяалиасом.
Задаваемое имя таблицы, которую нужно переименовать, не должнобыть именем таблицы каталога, сводной таблицы, типизированной таблицы иликакого-либо иного объекта, кроме таблицы или алиаса.На эту существующую таблицу не должны ссылаться:v Производные таблицыv Триггерыv Реляционные связиv Сводные таблицыv Области видимости существующих ссылочных столбцов|||||Эта таблица не должна также иметь проверочных ограничений илигенерируемых столбцов, кроме столбца идентификации.
Все пакеты икэшируемые динамические операторы SQL, зависящие от исходной таблицы,становятся недействительными. Наконец, все алиасы, ссылающиеся на исходнуютаблицу, не изменяются.Следует проверить соответствующие таблицы каталога, чтобы убедиться, чтопереименуемая таблица не нарушает каких-либо из этих ограничений.Для пакетов, ссылающихся на только что переименованную таблицу,необходимо заново выполнить связывание. Повторное связывание этих пакетовможет быть выполнено неявно, если:Глава 4.
Изменение базы данных209v Другая таблица переименована с использованием старого имени этойтаблицы илиv Создан алиас или производная таблица с использованием старого имени этойтаблицы.Перед попыткой выполнения неявного или явного повторного связываниянеобходимо выполнить одно из этих двух действий. Если ни одно из них невыполнено, повторное связывание завершится с ошибкой.Чтобы переименовать существующую таблицу с помощью Центра управления:|1.
Раскройте дерево объектов и найдите папку Таблицы.2. Щелкните правой кнопкой по таблице, которую нужно переименовать, и выберите извсплывающего меню пункт Переименовать.3. Введите новое имя таблицы и нажмите кнопку OK.Чтобы переименовать существующую таблицу из командной строки, введитекоманду:|||RENAME TABLE <имя_схемы>.<имя_таблицы> TO <новое_имя>Следующий оператор SQL переименовывает таблицу EMPLOYEE в схемеCOMPANY в таблицу EMPL:RENAME TABLE COMPANY.EMPLOYEE TO EMPLДополнительную информацию об операторе RENAME TABLE смотрите вруководстве SQL Reference.Отбрасывание таблицыТаблицу можно отбросить с помощью оператора SQL DROP TABLE.При отбрасывании таблицы строка с информацией об этой таблице удаляется изкаталога SYSCAT.TABLES, это также влияет на все другие объекты, зависящиеот этой таблицы.
Например:v Отбрасываются все имена столбцов.v Отбрасываются индексы, созданные для каких-либо столбцов таблицы.v Все производные таблицы, созданные на основе этой таблицы, отмечаютсякак неработоспособные. (Дополнительную информацию смотрите в разделе“Восстановление неработоспособных производных таблиц” на стр. 216.)v Неявно отменяются все привилегии для отброшенной таблицы и зависимыхпроизводных таблиц.v Отбрасываются все реляционные ограничения, в которых эта таблицаявляется родительской или зависимой.210Руководство администратора: Реализацияv Все пакеты и кэшируемые динамические операторы SQL, зависящие ототброшенной таблицы, отмечаются как недействительные и остаются в такомсостоянии, пока не будут заново созданы зависимые объекты.
Сюда входятпакеты, зависимые от каких-либо надтаблиц над отбрасываемой подтаблицейв ее иерархии. (Дополнительную информацию смотрите в разделе“Зависимости операторов при изменении объектов” на стр. 221.)v Все ссылочные столбцы, для которых отброшенная таблица определена какобласть видимости, становятся ссылочными столбцами “без областивидимости”.v Это не влияет на определение алиаса, так как алиас может бытьнеопределенным.v Все триггеры, зависящие от отброшенной таблицы, отмечаются какнеработоспособные.v Все файлы, связанные при помощи каких-либо столбцов DATALINK,становятся несвязанными. Операция отмены связей выполняется не сразу, тоесть эти файлы могут не быть немедленно доступны для других операций.|Чтобы отбросить таблицу с помощью Центра управления:1.
Раскройте дерево объектов и найдите папку Таблицы.2. Щелкните правой кнопкой мыши по таблице, которую нужно отбросить, и выберитеиз всплывающего меню пункт Отбросить.3. Включите переключатель Подтверждение и нажмите кнопку OK.||Чтобы отбросить таблицу из командной строки, введите команду:DROP TABLE <имя_таблицы>Следующий оператор отбрасывает таблицу DEPARTMENT:DROP TABLE DEPARTMENTЕсли таблица имеет подтаблицы, нельзя отбросить только ее одну. Однако всетаблицы в иерархии таблиц можно отбросить с помощью одного оператораDROP TABLE HIERARCHY, как показано в следующем примере:DROP TABLE HIERARCHY personВ операторе DROP TABLE HIERARCHY должно задаваться имя корневойтаблицы отбрасываемой иерархии.Существуют различия между отбрасыванием иерархии таблиц и отбрасываниемконкретной таблицы:Глава 4.
Изменение базы данных211v DROP TABLE HIERARCHY не активирует триггеры удаления, которыеактивируются отдельными операторами DROP TABLE. Например, приотбрасывании отдельной подтаблицы активируются триггеры удаления дляее надтаблиц.v DROP TABLE HIERARCHY не записывает в журнал записи для отдельныхстрок отброшенных таблиц. Вместо этого в журнал вносится информация оботбрасывании иерархии как об одном событии.Дополнительную информацию об операторе DROP смотрите в руководстве SQLReference.Отбрасывание пользовательской временной таблицыЕсть некоторые особенности, которые нужно учитывать при отбрасываниипользовательской временной таблицы (то есть таблицы, созданной с помощьюоператора DECLARE GLOBAL TEMPORARY TABLE).При отбрасывании такой таблицы в качестве спецификатора имени таблицынужно задать имя схемы SESSION и эта операция должна выполняться вприкладной программе, в которой таблица была создана.|||Пакеты не могут зависеть от этого типа таблиц, поэтому при отбрасываниитакой таблицы не возникает недействительных пакетов.При отбрасывании пользовательской временной таблицы, созданной доактивной единицы работы или точки сохранения, эта таблица функциональноотбрасывается и прикладная программа не может к ней обращаться.
Однако в еетабличном пространстве для нее еще остается зарезервированным некотороеколичество пространства и это не позволяет отбросить пользовательскоевременное табличное пространство до принятия единицы работы иливыполнения точки сохранения.Дополнительную информацию об операторе DROP смотрите в руководстве SQLReference.Отбрасывание триггераОбъект триггера можно отбросить с помощью оператора DROP, но при этомзависимые пакеты могут быть отмечены как недействительные, а именно:v Если отброшен триггер update без явного списка столбцов, становятсянедействительными пакеты, в которых выполняется операция обновления(update) для данной таблицы.v Если отброшен триггер update с явным списком столбцов, недействительнымистановятся только пакеты, в которых выполняется операция обновления(update) хотя бы одного столбца данной таблицы, перечисленного в спискеимен-столбцов оператора CREATE TRIGGER.212Руководство администратора: Реализацияv Если отброшен триггер insert, становятся недействительными пакеты, вкоторых выполняется операция вставки (insert) для данной таблицы.v Если отброшен триггер delete, становятся недействительными пакеты, вкоторых выполняется операция удаления (delete) для данной таблицы.Пакет остается недействительными, пока прикладная программа явно невыполнит его связывание или повторное связывание или пока этот пакет небудет запущен и менеджер баз данных не выполнит для него повторноесвязывание автоматически.||Отбрасывание пользовательской функции, отображения типов илиметодаПользовательскую функцию, шаблон функции или отображение функции можноотбросить с помощью оператора DROP.Отображение функции можно отключить с помощью опции отображенияDISABLE.