Получение информации о триггерах
Если вы не помните, в какой таблице был установлен удаляемый триггер, необходимую информацию можно получить из системных таблиц PostgreSQL. Например, можно провести объединение полей tgrelid системной таблицы pg_trigger и поля relfilenode системной таблицы pg_class и сравнить имя триггера с полем tgname. Запрос, приведенный в листинге 6.46, возвращает имя отношения (rel name), связанного с триггером check_shipment.
Листинг 6.46. Получение имени таблицы, связанной с триггером
SELECT relname FROM pg_class
INNER JOIN pg_trigger
ON (tgrelid = relfilenode)
WHERE tgname = 'check_shipment': .
relname
shipments
ВНИМАНИЕ. При удалении функции, вызываемой по срабатыванию триггера, триггер перестает работать, причем повторное определение функции с тем же именем не исправит проблему. После повторного создания функции триггер также приходится создавать заново.
В PostgreSQL триггеры хранятся в системной таблице pg_trigger, что позволяет получить информацию о существующих триггерах на программном уровне. Структуру таблицы pg_trigger иллюстрирует таблице 6.3.
Таблица 6.3. Таблица pgjrigger
Поле | Тип |
TGRELID | oid |
TGNAME | name |
TGFOID | oid |
TGTYPE | smallint |
TGENABLED | boo'i ean |
TGISCONSTRAINT | boolean |
TGCONSTRNAME | name |
TGCONSTRRELID | oid |
TGDEFERRABLE | boolean |
TGINLTDEF ERRED | boolean |
TGNARGS | smallint |
TGATTR | int2vector |
TGARGS | bytea |
Большинство полей, перечисленных в таблице 6.3, в прямых запросах не используется. Среди атрибутов триггеров в системной таблице pg_trigger центральное место занимают атрибуты tgrelid и tgname.
В поле tgrelid хранится идентификатор отношения, с которым связан данный триггер. Значение относится к типу oid и соответствует содержимому поля relfilenode системной таблицы pg_class. В поле tgname хранится имя триггера, указанное в команде CREATE TRIGGER при его создании.
Современные информационные системы гетерогенны и форматы хранения данных, определяемые реляционными СУБД, не являются единственными в своем роде. Например, данные о читателях библиотеки могут сопровождаться, используя электронные таблицы Excel, а отдел кадров может хранить информацию о студентах, которые одновременно являются читателями той же библиотеки в формате, определяемой реляционной СУБД, например, PostgreSQL. В случае зачисления студентов на первый курс сведения о студентах, введенные в базу данных отдела кадров, могут понадобиться библиотеке. Но в этом случае возникает проблема обмена данными. Дело в том, что электронные таблицы Excel не могут адекватно отобразить данные формата PostgreSQL.
Здесь на простом примере обозначена проблема совместимости форматов. Для решения этой проблемы предложено решение − хранение данных в формате XML. Так называется стандартный язык для представления и обмена структурированными данными. На сегодняшний день XML широко используется в Web-среде, выступая промежуточным универсальным форматом хранения данных.
XML представляет собой структуру и правила описания любой информации содержательным способом. Используя XML, вы можете создать свой язык разметки для представления информации любого вида. XML - это одна из самых важных новейших технологий, порожденных развитием Интернета.
XML - это самостоятельная технология, хотя и возникшая исторически как Internet-технология. Представляется важным рассмотреть технологию XML в отрыве от Internet в связи с технологиями баз данных. Поскольку и SQL, и XML является языками определения структурированных данных, можно предположить, что между этими двумя языками должна существовать взаимосвязь.
Вопрос заключается, в том как эти языки соотносятся друг к другу - находятся ли эти языки в конфликте или дополняют друг друга. Как связан язык XML с реляционным языком запросов SQL, можно ли на основе XML и построить модель данных, что собой представляет XML-ориентированная база данных, существуют ли таковые на сегодняшний день - этим вопросам посвящена последняя часть учебного пособия. В седьмой главе описываются основы XML, а в восьмой главе, на основе имеющихся сведений об этих языках, анализируются развивающиеся взаимоотношения между XML и SQL и рассматривается вопрос интеграции XML в SQL-продукты.
Дата добавления: 2015-02-03; просмотров: 1066;