|
Навигация
|
Главная » Игры Новое в 8i: триггеры схемы БДИсточник: Interface Ltd Владимир Пржиялковский В версии 8i разработчик сталкивается с целой серией новых видов триггеров. Шесть из них запускаются событиями, возникающими при выполнении операций на уровне схемы, и поэтому носят название "триггеры для событий уровня схемы БД" (schema-level event triggers). Что это за триггеры? Вот перечень запускающих их событий:
Вот какие правила и атрибуты свойственны каждому событию:
В своей последней книге Стив Фойерштайн приводит пример использования триггера уровня схемы, который здесь помещается с небольшими изменениями. Предположим, мы хотим предоставить пользователям входить в систему под именем SCOTT, но запретить им удалять все таблицы, начинающиеся с EMP. Предположим, что это очень важные таблицы. Триггер, запрещающий это делать, может выглядеть примерно так: CREATE OR REPLACE TRIGGER no_drop_trg BEFORE DROP ON SCOTT.SCHEMA DECLARE v_msg VARCHAR2(1000) := 'No drop allowed on ' // DICTIONARY_OBJ_OWNER // '.' // DICTIONARY_OBJ_NAME // ' from ' // LOGIN_USER; BEGIN IF DICTIONARY_OBJ_OWNER = 'SCOTT' AND DICTIONARY_OBJ_NAME LIKE 'EMP%' AND DICTIONARY_OBJ_TYPE = 'TABLE' THEN RAISE_APPLICATION_ERROR ( -20905, v_msg); END IF; END; / (Для того, чтобы триггер странслировался, нужно установить параметр COMPATIBLE в INIT.ORA в значение, не меньшее, чем 8.1.0.0.0). Теперь в ответ на DROP TABLE EMP; вы получите результат drop table emp * ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-20905: No drop allowed on SCOTT.EMP from SCOTT ORA-06512: at line 12 и таблица останется целой (удаление не сработает, поскольку мы сынициировали ошибку). Остается отметить, что мы защитили нашу таблицу на уровне DDL (и, тем самым, сохранили по крайней мере ее структуру), но не предохранились от несанкционированного удаления строк из таблицы (уровень DML). Для этого придется воспользоваться другими средствами Oracle: обычными триггерами таблицы и … средствами резервного копирования и восстановления. В промышленной же прикладной системе, передаваемой заказчику, и то, и другое, и третье, вероятно, должно играть роль "второго эшелона обороны", вступающего в игру после отказов в "первом эшелоне" - процедурном доступе к таблицам или доступе, полностью контролируемом приложением. С другой стороны, если наша цель - не просто защитить таблицу от удаления, а предпринять при попытке удаления какие-нибудь вспомогательные действия (журнализировать акт такой попытки, скопировать таблицу во временную область перед удалением и так далее), то приемлемой альтернативы триггеру типа приведенного выше нет. Кибертерроризм приравняли к оружию массового поражения. Сетевой рынок: прогнозы на 2011 год. CA Technologies названа ведущей на рынке PPM. IBM Rational DOORS Web Access. Рынок аналитики in-memory выходит из "подросткового" возраста. Главная » Игры |
© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено. |