On таблица1
For действие (insert, update, delete)
As
Блок SQL;
Oracle)
Триггеры делятся по времени срабатывания BEFORE, AFTER (до или после события вызвавшего триггер) и так же по событиям (Insert, Update, Delete)
Порядок выполнения триггеров: операторный триггер BEFORE à однострочный триггер BEFORE à СОБЫТИЕ à однострочный триггер AFTER à операторный триггер AFTER.à срабатывает триггер à проверка ограничений
Структура создания триггера:
Create trigger имя триггера
Before/After
[Delete] [or Insert] [or delete]
On таблица1
[For each row]
[when(условие)]
Блок PL/SQL;
Примеры создания триггеров.
1) Создать триггера, изменяющие объем продаж (поле результат) для продавца и офиса, при каком-либо изменении таблицы ЗАКАЗЫ.
Oracle)
CREATE TRIGGER Credit BEFORE INSERT
ON Клиенты FOR EACH ROW
BEGIN
IF:New.кредит IS NULL or:New.кредит=0 THEN
:New.кредит=1000;
END IF;
END;
SQL Server)
CREATE TRIGGER Credit
ON Клиенты
FOR INSERT
As
IF Кредит IS NULL or Кредит=0 THEN
Кредит=1000;
2) Создать триггера, изменяющие объем продаж (поле результат) для продавца и офиса, при каком-либо изменении таблицы ЗАКАЗЫ.
|
|
Здесь для каждого вида изменений можно написать по триггеру, т.е. on Update, on Insert, on delete с некоторыми малыми отличиями для каждой СУБД, как это было уже показано выше. Но в СУБД Oracle можно все это объединить в один триггер.
Oracle)
Create trigger SaleWeight before insert or update or delete
ON Заказы FOR EACH ROW
begin
IF updating then
update продавцы
set результат:=результат+:new.сумма-:old.сумма
where:old.прод_ид=ид;
update офисы
set результат:=результат+:new.сумма-:old.сумма
where:old.прод_ид=прод_ид;
end if;
IF deleting then
update продавцы
set результат:=результат-:old.сумма
where:old.прод_ид=ид;
update офисы
set результат:=результат-:old.сумма
where:old.прод_ид=прод_ид;
end if;
IF inserting then
update продавцы
set результат:=результат+:new.сумма
where:old.прод_ид=ид;
update офисы
set результат:=результат+:new.сумма
where:old.прод_ид=прод_ид;
end if;
end;
· Oracle позволяет более гибко распределиться временем срабатывания триггера в отличие от SQL Server.
· В SQL Server нет надобности смотреть, когда срабатывает триггер “до или после”, изменения записываются сразу же, а триггер после всех изменений и только в недопустимых случаях происходит откат транзакции.
· Oracle позволяет давать более сложное описание триггера.
Поддержка национальных языков
Средство поддержки национальных языков Oracle (National Language Support - NLS) позволяет пользователям использовать базу данных на их собственных языках. Это средство обеспечивает следующие функции:
1. Поддержка различных схем кодирования, т.е. данные, созданные в схеме кодирования на одной машине, могут быть обработаны и представлены на другой.
2. Управление языком вывода ошибок сервера и информационных сообщений, чисел, дат, форматов валюты и начального дня недели.
|
|
3. Поддержка лингвистической сортировки гарантирует, что символы появляются в корректном порядке.
Можно добавлять поддержку для новых языков, используя программный продукт NLS*WorkBench, который, по существу, поддерживает таблицы перевода для интерпретации ввода от пользователя и для вывода на экран результатов.
Когда в поставку прикладной системы входят приложения на различных языках, наиболее важной частью пользовательского интерфейса являются различные подсказки, библиотека стандартных текстов и сообщения приложения. В настоящее время непосредственно разработчики приложения определяют, как библиотека стандартных текстов, подсказки и сообщения прикладной системы изменяются от одного языка к другому. Oracle работает над программным продуктом автоматического перевода с целью упрощения решения этой задачи.
Иные сравнительные характеристики SQL СУБД.
Как было отмечено выше, выбор конкретной архитектуры построения информационной системы включает два основных компонента: выбор серверной платформы (выбор серверной ОС и СУБД) и выбор платформ для клиентских рабочих мест. При выборе базы данных очень важно выбрать базу данных, которая в наибольшей степени соответствуют предъявляемым к информационной системе требованиям, т.е. необходимо определиться какая модель автоматизации реализуется (автоматизация документооборота или бизнес - процессов). В первую очередь при выборе СУБД необходимо принимать во внимание следующие факторы:
максимальное число пользователей одновременно обращающихся к базе;
характеристики клиентского ПО;
аппаратные компоненты сервера;
серверную операционную систему;
уровень квалификации персонала.
На сегодня известно большое число различных серверов баз данных SQL. Остановимся более подробнее на следующих четырех ведущих серверных СУБД - Oracle8i, IBM DB2, Microsoft SQL Server и Informix - и сравним их в работе на каждом из основных этапов функционирования:
конфигурирование системы,
мониторинг,
настройка,
обработка запросов,
разработка серверных и клиентских модулей.
Данный анализ проведем с учетом того, что число клиентских мест составляет от 50 до 500, а управление СУБД должно быть максимально эффективно. Исследования проводились на серверной платформе на базе Pentium II с 128 Мбайт ОЗУ, укомплектованном 13-Гбайт диском с интерфейсом EIDE в конфигурации RAID уровня 0 (конечно лучше было бы использовать HDD с интерфейсом SCSI). Управление системами было возложено на ОС Windows NT Server 4.0. и Linux.
Oracle8i)
Пакет Oracle8i, наделенный самым развитым набором функций для работы с языком Java и доступа к данным через Интернет, системой оптимизации одновременного доступа. Единственным недостатком данной СУБД является сложность администрирования, однако все затраты на ее внедрение и освоение в последствии окупятся эффективной и надежной работой. В нашей стране на протяжении уже многих лет целым рядом специалистов культивируется негативное отношение к СУБД Oracle, как к дорогой и сложной СУБД. Оба эти тезиса являются спорными. Во-первых, уровень сложности понятие относительное. При использовании СУБД Oracle на платформе NT, она потребует практически тех же усилий, что и при использовании MS SQL. В случае же работы на UNIX-платформе, можно с уверенностью отметить, что для профессиональных юниксоидов среда Oracle является простой, понятной и доступной. Что касается дороговизны, то и тут наметились положительные сдвиги. Кроме того, что компания Oracle предлагает ряд различных масштабируемых решений в зависимости от числа обслуживаемых клиентов, она также следуя общемировым тенденциям разработала версию своей популярнейшей СУБД под LINUX и выложила ее на своем WEB сервере (www.oracle.com) для свободного использования. Среди основных свойств СУБД Oracle следует отметить такие, как:
|
|
Высочайшая надежность.
Возможность разбиения крупных баз данных на разделы (large-database partition), что дает возможность эффективно управлять гигантскими гигабайтными базами;
Наличие универсальных средств защиты информации;
Эффективные методы максимального повышения скорости обработки запросов;
Индексация по битовому отображению;
Свободные таблицы (в других СУБД все таблицы заполняются сразу при создании);
Распараллеливание операций в запросе.
Наличие широкого спектра средств разработки, мониторинга и администрирования.
Ориентация на интернет технологии.
Решения, не уступающие разработкам Oracle можно найти только в DB2 фирмы IBM. Ориентация на интернет технологии - основной девиз современных продуктов Oracle. В этой связи можно отметить пакеты interMedia, обеспечивающее обработку данных в мультимедийных форматах, и Jserver, встроенное средство для работы с языком Java, которое объединяет возможности языка Java с возможностями реляционных баз данных (возможность составлять на языке Java не только внутренние программы для баз данных (хранимые процедуры и триггеры), но и разрабатывать компоненты Enterprise JavaBeans и даже запустить их на сервере). Компоненты Enterprise JavaBeans представляют собой базовые модули из которых складываются Интернет-приложения на языке Java.
Фирма Oracle придерживается принципа, что всеми важными функциями необходимо управлять из единого центра, поэтому предлагаемый модуль interMedia предоставляет в распоряжение пользователей самые передовые возможности для работы с мультимедийными объектами:
Очень развитые средства для обработки аудио клипов;
Неподвижных изображений;
Видеофрагментов;
Географических данных (с целым набором функций связанных с определением местонахождения входящих в состав модуля Locator).
В Oracle8i реализуются лучшие на сегодняшний день средства для объектно-ориентированного конструирования баз данных, в том числе табличные структуры, допускающие наследование свойств и методов других табличных объектов БД, что позволят избежать ошибок при построении БД и облегчает их обслуживание.
|
|
Также необходимо отметить, что разработанная фирмой Oracle система оптимизации одновременного доступа (multiversioning concurrency) является одной из важнейших характеристик архитектуры Oracle (подобная функция есть лишь в СУБД InterBase компании InterBase компании Inprise). Данная функция позволяет исключить ситуацию, когда одному пользователю приходится ждать, пока другой завершит изменения в содержимое баз данных (т.е. в Oracle отсутствуют блокировки на чтение). Эта функция позволяет СУБД Oracle8i выполнять за секунду больше транзакций в расчете на одного пользователя, чем любая другая база данных. По уровню производительности при работе в WEB среде под LINUX Oracle занимает почетное второе место после СУБД MySQL, при этом значительно превосходя все другие СУБД по надежности и безопасности.