Создание новой хранимой процедуры
CREATE PROCEDURE < имя_процедуры >
[{@имя_параметра тип_данных }
AS
BEGIN
SELECT <необходимый_текст_запроса>
END
GO
Удаление хранимой процедуры
DROP PROCEDURE {имя_процедуры}
Выполнение хранимой процедуры
EXEC <имя_процедуры> [@имя_параметра=]{значение}
Триггер – это откомпилированная SQL-процедура, исполнение которой обусловлено наступлением определенных событий внутри реляционной базы данных.
Триггер представляет собой специальный тип хранимых процедур, запускаемых сервером автоматически при попытке изменения данных в таблицах, с которыми триггеры связаны. Каждый Триггер привязывается к конкретной таблице. Все производимые им модификации данных рассматриваются как одна транзакция. В случае обнаружения ошибки или нарушения целостности данных происходит откат этой транзакции. Тем самым внесение изменений запрещается.
Триггеры позволяют решать различные задачи:
· проверка корректности введенных данных и выполнение сложных ограничений целостности данных, которые трудно, если вообще возможно, поддерживать с помощью ограничений целостности, установленных для таблицы;
· выдача предупреждений, напоминающих о необходимости выполнения некоторых действий при обновлении таблицы, реализованном определенным образом;
· накопление аудиторской информации посредством фиксации сведений о внесенных изменениях и тех лицах, которые их выполнили;
· поддержка репликации;
· расчет промежуточных результатов и других вычисляемых значений.
Создание триггеров
CREATE TRIGGER < имя_триггера >
ON < имя_таблицы >
AS
BEGIN
{ [ DELETE] [,] [ INSERT] [,] [ UPDATE] }
<тело_триггера>
END
Удаление триггера
DROP TRIGGER {имя_триггера}
Классы триггеров
· AFTER. Триггер выполняется после успешного выполнения вызвавших его команд. Если же команды по какой-либо причине не могут быть успешно завершены, триггер не выполняется. Следует отметить, что изменения данных в результате выполнения запроса пользователя и выполнение триггера осуществляется в теле одной транзакции: если произойдет откат триггера, то будут отклонены и пользовательские изменения.
· INSTEAD OF.Триггер вызывается вместо выполнения команд. INSTEAD OF-триггер может быть определен как для таблицы, так и для просмотра.
Существует три типа триггеров:
· INSERT TRIGGER – запускаются при попытке вставки данных с помощью команды INSERT. Команда INSERT – в таблице inserted содержатся все строки, которые пользователь пытается вставить в таблицу; в таблице deleted не будет ни одной строки; после завершения триггера все строки из таблицы inserted переместятся в исходную таблицу.
· UPDATE TRIGGER – запускаются при попытке изменения данных с помощью команды UPDATE. Команда UPDATE – при ее выполнении в таблице deleted находятся старые значения строк, которые будут удалены при успешном завершении триггера. Новые значения строк содержатся в таблице inserted. Эти строки добавятся в исходную таблицу после успешного выполнения триггера.
· DELETE TRIGGER – запускаются при попытке удаления данных с помощью команды DELETE. Команда DELETE – в таблице deleted будут содержаться все строки, которые пользователь попытается удалить; триггер может проверить каждую строку и определить, разрешено ли ее удаление; в таблице inserted не окажется ни одной строки.
Особенности архитектуры «клиент-сервер»
Архитектура клиент-сервер основана на распределении функций между двумя типами независимых и автономных процессов: серверами и клиентами.
Основные правила архитектуры клиент-сервер:
■ независимость от оборудования. Требует, чтобы процессы клиента, сервера и ППО могли выполняться на различных аппаратных платформах (IBM, DEC, Apple и др.) без какого-либо изменения функциональных возможностей;
■ открытый доступ к сервисам. Все клиенты в системе должны иметь неограниченный доступ ко всем сервисам, предоставляемым внутри сети. И эти сервисы не должны зависеть от расположения клиента или сервера;
■ распределение процессов (автономность процессов, максимальное использование локальных ресурсов, масштабируемость и гибкость, способность к взаимодействию и интегрируемость)
■ стандартизация. Все правила клиент-серверной архитектуры должны быть основаны на стандартах.
Основной принцип технологии клиент-сервер заключается в разделении функций приложения на 4 группы:
1. Функции ввода и отображения данных — презентационная логика.
2. Прикладные функции, определяющие основные алгоритмы решения задач приложения и характерные для данной предметной области (например, для банковской системы — открытие счета, перевод денег с одного счета на другой и т.д.) — бизнес-логика.
3. Фундаментальные функции хранения и управления информационными ресурсами (базами данных, файловыми системами и т.д.).
4. Служебные функции, играющие роль связок между функциями первых трех групп.
Поэтому, в любом приложении выделяются следующие компоненты:
· компонент представления данных (функции 1-й группы);
· прикладной компонент (функции 2-й группы);
· компонент управления ресурсом (функции 3-ей группы и протокол их взаимодействия).