Замечание: Триггеры создаются для конкретной таблицы и выполняются автоматически, если с таблицей, для которой они были созданы, происходит событие (добавление, изменение или удаление записей).
Перейдём к созданию триггеров. Создадим триггеры для таблицы «Сту- денты». Триггеры создаются отдельно для каждой таблицы и располагаются в обозревателе объектов в папке “Triggers” («Триггеры»). В нашем случае, папка “Triggers” («Триггеры») входит в состав таблицы «Студенты» (рис. 78).
Рисунок 78 — Папка «Триггеры» для таблицы «Студенты» в окне обозревателя объектов
Для начала создадим триггер, выводящий сообщение «Запись добавлена» при добавлении записи в таблицу «Студенты». Создадим новый триггер, щёлк- нув правой кнопкой мыши по папке “Triggers” («Триггеры») в таблице «Сту- денты» и в появившемся меню выбрав пункт “New Trigger” («Создать триг- гер»). Появится следующее окно с новым триггером (рис. 79):
Рисунок 79 — Окно с новым триггером
Рассмотрим структуру триггеров:
Область определения имени функции (Trigger_Name);
Область, показывающая, для какой таблицы создаётся триггер
(Table_Name);
Область, показывающая, когда выполнять триггер (INSERT — при созда- нии записи в таблице, DELETE — при удалении и UPDATE — при изме- нении) и как его выполнять (ALTER — после выполнения операции, INSTEAD OF — вместо выполнения операции);
Тело триггера, содержит команды языка программирования запросов
SQL.
В окне нового триггера наберите код, как показано на рисунке 80.
Рисунок 80 — Текст триггера «Индикатор добавления» для таблицы «Студенты»
Из рисунка 80 видно, что создаваемый триггер «Индикатор добавления» выполняется после добавления записи (AFTER INSERT) в таблицу «Студенты» (ON dbo.Студенты). После добавления записи триггер выведет на экран сооб- щение «Запись добавлена» (PRINT 'Запись добавлена').
Выполните набранный код, нажав кнопку ( ) на па- нели инструментов. В нижней части окна с кодом появится сообщение “Com- mand(s) completed successfully.” («Выполнение команд успешно завершено.»).
Проверим, как работает новый триггер. Создайте новый пустой запрос и в нём наберите следующую команду для добавления новой записи в таблицу
«Студенты» (рис. 81):
Рисунок 81 — Текст запроса для проверки работы триггера «Индикатор добавления» в таблицу «Студенты»
Выполните набранную команду, нажав кнопку ( ) на панели инструментов. В таблицу будет добавлена новая запись, и триггер выведет сообщение «Запись добавлена» в нижней части экрана.
Теперь создадим триггер, отображающий сообщение «Запись изменена». Создайте новый триггер, как в предыдущем случае. В окне нового триггера наберите следующий код (рис. 82):
Из рисунка 82 видно, что новый триггер «Индикатор изменения» выпол- няется после изменения записи (AFTER UPDATE) в таблице «Студенты» (ON dbo.Студенты). После изменения записи триггер выведет на экран сообщение
«Запись изменена» (PRINT "Запись изменена").
Выполните набранный код. В нижней части окна с кодом появится сооб- щение «Command(s) completed successfully.» («Выполнение команд успешно за- вершено.»).
Рисунок 82 — Текст триггера «Индикатор изменения» для таблицы «Студенты»
Проверим работоспособность созданного триггера. Создайте новый за- прос и в нём наберите команду, представленную на рисунке 83:
Рисунок 83 — Текст запроса для проверки работы триггера «Индикатор изменения» для таблицы «Студенты»
Выполните набранную команду, нажав кнопку ( )
на панели инструментов.
В таблице будет изменена указанная запись, и триггер выведет сообщение
«Запись изменена».
Для полноты картины создадим триггер, выводящий сообщение при уда- лении записи из таблицы «Студенты». Создайте новый триггер и в нём набери- те код, показанный на рисунке 84.
Рисунок 84 — Текст триггера «Индикатор удаления» для таблицы «Студенты»
Создаваемый триггер «Индикатор удаления» выполняется после удаления записи (ALTER DELETE) из таблицы «Студенты» (ON dbo.Студенты). После
удаления записи триггер выводит сообщение «Запись удалена» (PRINT "Запись удалена").
Выполните код, представленный на рисунке 84. В нижней части окна с кодом появится сообщение «Command(s) completed successfully.» («Выполнение команд успешно завершено.»).
Проверим работу триггера «Индикатор удаления», удалив созданную ра- нее запись из таблицы «Студенты». Для этого создайте новый запрос и в нём наберите следующую команду (рис. 85):
Рисунок 85 — Текст запроса для проверки работы триггера «Индикатор удаления» из таблицы «Студенты»
Выполните вышеприведённую команду. После удаления записи триггер
«Индикатор удаления» отобразит сообщение «Запись удалена».
В заключение рассмотрим пример применения триггеров для обеспечения целостности данных. Создадим триггер «Удаление студента», который при удалении записи из таблицы «Студенты» сначала удаляет все связанные с ней записи из таблицы «Оценки», а затем удаляет саму запись из таблицы «Студен- ты», тем самым обеспечивается целостность данных.
Создайте новый триггер и в нём наберите следующий код (рис. 86):
Создаваемый триггер «Удаление студента» выполняется вместо удаления записи (INSTEAD OF DELETE) из таблицы «Студенты» (ON dbo.Студенты).
Достарыңызбен бөлісу: |