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

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

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

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

В SQL Server существуют три типа триггеров (для каждого типа запроса, выполняющих изменение данных), плюс все возможные их сочетания.

Синтаксис оператора создания триггера:

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

ON <имя представления или таблицы>

[WITH ENCRYPTION]

{{{FOR|AFTER}<[DELETE][,][INSERT][,][UPDATE]>}|INSTEAD OF}

[WITH APPEND]

[NOT FOR REPLICATION]

AS

<SQL-оператор

...

...

...>

К общепринятым сферам применения триггеров относиться:

- поддержка ссылочной целостности;

- создание контрольного журнала: запись информации, отражающей не только последнее состояние данных, но и хранение истории вносимых изменение для каждой записи;

- вместо ограничений проверки для работы с несколькими таблицами, базами данных или даже несколькими серверами;

- выполнение собственного программного кода вместо операторов пользователя (обычно для осуществления вставки в сложные представления).

 

Ход работы

1 Создать связи между таблицами (справочной таблицей (со стороны «один» связи «один-ко-многим») и таблицей данных (со стороны «многие» связи «один-ко многим») с помощью двух триггеров.

− Триггер справочной таблицы запрещает удаление записей в этой таблице, значение ключевых полей которой существуют в таблице данных.

− Триггер таблицы данных запрещает вставку и редактирование записей, значение ключевых полей которых отсутствуют в справочной таблице.

2 Проверить работу триггеров, организующих связи между таблицами.

3 Создать для каждой таблицы триггеры (Update, Delete, Insert), выполняющие определенные действия при запуске. Например, обновление значений поля путем вычисления по формуле при наступлении определенного события.

4 Организовать запуск триггеров таким образом, чтобы при выполнении одного триггера, запускался второй, при выполнении второго – третий и т.д., осуществив тем самым каскадное воздействие объектов базы данных.

5 Проверить работу триггеров, выполняющих определенные действия при запуске.

6 Пояснить работу триггера при установке опций FOR|AFTER и INSTEAD OF.

7 Оформить подробный отчет и сделать вывод по выполненной работе.

 


Контрольные вопросы

1 Что представляет собой триггер? Назначение.

2 Виды триггеров. Различия.

3 Синтаксис создания, изменения, удаления триггера.

4 Какие временные таблицы создаются при выполнении каждого вида триггера?

5 Может ли таблица не указанная после ключевого слова ON при создании триггера воспользоваться действием триггера? Почему?

6 Как триггеры можно использовать для установления ссылочной целостности?

7 Какие операторы Transact-SQL можно использовать в теле триггера?

8 Что произойдет после выполнения (Compile) команды Create Trigger...?

9 Какие операции могут выполнять триггеры?

10 Создание триггера в графическом режиме.
Лабораторная работа № 11


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: