Замечание: При срабатывании триггера вместо удаления записи создаёт- ся временная константа Deleted, содержащая имя таблицы, из которой должно было быть произведено удаление.
После срабатывания триггера из таблицы «Оценки» удаляется запись, у которой значение поля «Код студента» равно значению такого же поля у удаля- емой записи из таблицы «Студенты». Эту операцию выполняют следующие команды:
DELETE dbo.Оценки FROM Deleted
WHERE Deleted.[Код студента] = Оценки.[Код студента]
Затем удаляется запись из таблицы «Студенты», которую удаляли до сра- батывания триггера. Удаление выполняется следующими командами:
DELETE dbo.Студенты FROM Deleted
WHERE Deleted.[Код студента] = Студенты.[Код студента]
Рисунок 86 — Текст триггера «Удаление студента»
Выполните код, представленный на рисунке 86. В нижней части окна с кодом появится сообщение «Command(s) completed successfully.» («Выполнение команд успешно завершено.»).
Проверим, как работает триггер «Удаление студента». Для этого создайте новый запрос и в нём наберите следующий код (рис. 87):
Рисунок 87 — Текст запроса для проверки работы триггера «Удаление студента»
При срабатывании триггера сначала из таблицы «Оценки» удалятся все связанные с удаляемой записью записи, а затем удаляется сама удаляемая за- пись из таблицы «Студенты», при этом сохраняется целостность данных.
Замечание: Хотелось бы заметить, что без использования триггера «Уда- ление студента» нам бы не удалось удалить запись из таблицы «Студенты». Команда удаления была бы заблокирована диаграммой базы данных во избежа- ние нарушения целостности данных.
Достарыңызбен бөлісу: |