Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
управление данными.doc
Скачиваний:
46
Добавлен:
11.03.2015
Размер:
1.51 Mб
Скачать

Выполнение хранимых процедур

Для выполнения хранимой процедуры из окна проекта Access

достаточно выполнить на ней двойной щелчок. Если у процедуры имеются входные параметры, Access запросит их значения. Возвращенные хранимой процедурой записи система выведет в виде таблицы.

Если хранимая процедура не возвращает записей, Access выводит диалоговое окно с сообщением о том, что процедура выполнена.

Непосредственный вывод выходных параметров хранимых процедур в Access не предусмотрен.

Создание триггеров

Триггер – это хранимая процедура, которая автоматически выполняется при вставке, обновлении или удалении записи. Можно считать, что это просто обработчик событий таблицы.

Триггеры полезны для принудительного соблюдения определенных деловых условий или требований. В отличие от проверяемых ограничений, триггеры могут выполнять запросы к другим таблицам и могут содержать сложные инструкции SQL.

Для создания триггера в Access нужно выбрать в окне базы данных серверную таблицу и в ее контекстном меню выбрать команду Триггеры... В результате этого появится диалоговое окно Триггеры для таблицы. Здесь можно выбрать команду создания, удаления или редактирования триггера.

Синтаксис триггеров

Триггеры создаются с помощью оператора CREATE TRIGGER:

CREATE TRIGGER имя триггера

ON имя таблицы

FOR [ Insert ], [ Update ], [ Delete ]

AS

Операторы SQL

Имена триггеров должны быть уникальными в пределах базы данных. Каждый триггер может быть связан только с одной таблицей, но для каждой таблицы можно создать любое количество триггеров.

Предложение FOR определяет, когда вызывается данный триггер. Он может вызываться для одной или нескольких таких операций, как вставка ( Insert ), удаление ( Delete ) и обновление ( Update ) записей. За ключевым словом AS следует тело триггера. Его составляют операторы, которые будут выполняться, когда SQL-Server вызовет ваш триггер.

При модификации существующего триггера, конструктор заменяет оператор CREATE TRIGGER на ALTER TRIGGER (команда замены существующего триггера).

Код триггера выполняется перед тем, как данные будут полностью сохранены, но триггер видит таблицу уже в измененном состоянии.

Пример:

Для таблицы tblMenu определен триггер, обновляющий итоговые значения в таблице tblMenuTotals каждый раз, когда обновляется, добавляется или удаляется запись в таблице tblMenu.

Create Trigger trgtblMenuUpdateTotalsUID

On dbo.tblMenu

For Insert, Update, Delete

As

set nocount on

DECLARE @curAvgPrice MONEY,

@curMinPrice MONEY,

@curMaxPrice MONEY

SELECT @curAvgPrice = Avg(Price),

@curMinPrice = Min(Price),

@curMaxPrice = Max(Price)

FROM tblMenu

UPDATE tblMenuTotals

SET AvgPrice = @curAvgPrice,

MinPrice = @curMinPrice,

MaxPrice = @curMaxPrice

WHERE Id = 1

Таблицы Inserted и deleted

SQL Server поддерживает две специальные таблицы, с именами inserted и deleted. В них он помещает копии вставляемых, изменяемых ил удаляемых строк.

В ходе выполнения команд обновления, удаления или вставки данных SQL Server выполняет над таблицей триггера и таблицами inserted и deleted следующие операции.

  • Перед вызовом Insert-триггера SQL Server добавляет новые строки в таблицу триггера и еще одну их копию в таблицу Inserted.

  • Перед вызовом Delete-триггера SQL Server удаляет заданные строки из таблицы триггера и копирует их в таблицу deleted.

  • Перед вызовом Update-триггера SQL Server помещает заменяемые строки в в таблицу deleted. Обновленные строки добавляются в таблицу триггера и в таблицу inserted.