PRINT ‘Отмена продажи: недостаточное количество товара’
Пример 2.Пусть пополнение таблицы Поставки осуществляется командой
INSERT INTO Поставки VALUES('01/08/2002', 103 , 1, 45, 200)
Здесь ID_товара=103, ID_поставщика = 1, Количество поставляемого товара =45, Цена_ед_товара =200.
Если товар с номером 103 отсутствует в таблице Товары, то транзакция отменяется и выдается предупреждение о том, что сначала необходимо внести такой товар в таблицу Товары.
Замечание:триггер обрабатывает только одну добавляемую строку.
Пример 3.Создать триггер для обработки операции удаления записи из таблицы Поставки, например, такой команды:
DELETE FROMПоставки WHEREТовар=4
Однако такое удаление может нарушить в базе данных количественное соответствие поставленного и проданного товара с номером 4, а именно, может оказаться, что по совокупности поставлено такого товара меньше, чем было продано.
Необходимо перед удалением записи произвести соответствующие расчеты и разрешить удаление только в случае не нарушения бизнес-правила.
Триггер обрабатывает только одну удаляемую запись.
Пример 4.Создать триггер для обработки операции изменения записи в таблице Продажи, например, такой командой:
UPDATE Продажи SET Количество=Количество-10 WHEREID_Товара=3
для всех продаж с товаром, имеющим ID_товара= 3, уменьшить количество проданного товара на 10 единиц.
Замечание: указанная команда может привести к изменению сразу нескольких записей в таблице Продажи. Поэтому необходимо создать триггер, обрабатывающий не одну запись.
Пример 4.В примере 3 происходит отмена всех изменений при невозможности реализовать хотя бы одно из них. Создать триггер, позволяющий отменять изменение только некоторых записей и выполнять изменение остальных.
Замечание: в этом случае триггер должен выполняться не после изменения записей, а вместо команды изменения.