37
• сведения о выполненных заказах хранятся в течение шести месяцев, а за-
тем удаляются;
• нельзя выдавать читателю новых книг, пока он не вернет взятых ранее;
• каждый раз, когда продается какой-нибудь товар, для служащего, офор-
мившего продажу, и для отдела, в котором этот служащий работает, на
стоимость проданного товара
увеличивается значение определенного по-
ля, используемого для вычисления премии; в случае возврата всего или
части проданного товара, значение этого поля соответствующим образом
должно уменьшиться;
• каждый раз, когда приходит новая поставка, количество поставленного
товара на складе увеличивается на количество товара в поставке.
Такие правила называются бизнес-правилами. В первом стандарте SQL
считалось, что эти правила выходят за рамки ответственности СУБД и за их
реализацию отвечает прикладная программа, осуществляющая доступ к базе
данных. Впервые в 1986 году в СУБД Sybase было введено понятие триггер,
что позволило включить реализацию бизнес-правил в базу данных.
5.4.3. Триггеры (Triggers)
С любым событием, вызывающим изменение содержимого таблицы,
можно связать сопутствующее действие (триггер), которое СУБД должна
выполнять при каждом возникновении события. Триггер – это группа опе-
раторов языка SQL, которые автоматически выполняется при вставке, моди-
фикации или удалении записи.
В СУБД InterBase можно создавать триггеры, работающие при сле-
дующих шести условиях:
• до вставки записи
(BEFORE INSERT);
• после вставки записи (AFTER INSERT);
• до удаления записи (BEFORE DELETE);
• после удаления записи (AFTER DELETE);
• до модификации записи (BEFORE UPDATE);
• после модификации записи (AFTER UPDATE).
В Firebird 1.5 триггер может срабатывать при возникновении одного из
нескольких событий. Триггеры могут вызывать выполнение хранимых про-
цедур
TP
*
PT, выполнять различные проверки и генерировать исключения. Обычно
триггеры используются для задания сложных правил контроля целостности
базы данных, которые невозможно реализовать с помощью ограничений.
Недостатком триггеров является их влияние на производительность
операций с базой данных.
P
*
P Хранимые процедуры изучаются в другой лабораторной работе.P