Читайте также:
|
|
Триггер - это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено наступлением определенного события - добавлением INSERT или удалением DELETE строки в заданной таблице, или модификации UPDATE данных в определенном столбце заданной таблицы реляционной базы данных.
Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые транзакции, в которой выполнено действие, вызвавшее срабатывание триггера. В случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции. Тем самым внесение изменений запрещается, отменяются также все изменения, уже сделанные триггером. Создает триггер только владелец базы данных. Для базы данных «Кондитерская фабрика» создадим три триггера:
1) Триггер типа UPDATE печатает определенный текст, при каждой модификации таблицы «Водители». Триггер- (рисунок 5).
Рисунок 5 - Триггер типа UPDATE
Будет возвращено сообщение «В таблицу были внесены изменения (строк обработано: 1)»,так как в результате выполнения оператора UPDATE был запущен триггер. В данном триггере мы задали вывод сообщения, чтобы можно было увидеть работу триггера;
2) Триггер типа DELETE будет сохранять все строки, удаленные из таблицы «Доставка», в таблицу «Доставка_Корзина» для последующего анализа данных. Код создания триггера DELETE, внесение строки в таблицу «Доставка» и её удаление, приведены на рисуноке 6.
Создание триггера « Доставка_Корзина»:
CREATE TRIGGER Корзина
ON Доставки
FOR DELETE
AS
INSERT INTO Доставки_Корзина
SELECT * FROM Доставки_Корзина
GO
Рисунок 6 - Триггер типа DELETE
Отметим, что надпись о количестве обработанных строк отобразилась дважды. Первый это непосредственно удаление строки, а второй запись ее в таблицу «Доставка_Корзина». Это возможно потому, что резервной таблице присвоены те же имена колонок и те же типы данных, что и в исходной таблице. Изначально таблица «Доставка_Корзина» не содержит записей, она будет заполняться по мере удаления записей из таблицы «Доставка»;
3) Триггер INSERT для таблицы «Заказы» будет проверять указано ли количество изделия (хотя бы 1). Проверка триггера представлена на рисунке 7:
-- создание триггера типа INSERT
CREATE TRIGGER Триггер3
ON Заказы
AFTER INSERT
AS
IF (SELECT КОЛИЧЕСТВО FROM ЗАКАЗЫ) < 1
ROLLBACK
Рисунок 7 - Проверка триггера типа INSERT
Дата добавления: 2015-07-11; просмотров: 61 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Создание таблиц | | | Контрольная работа №1 |