Читать в оригинале

<< Предыдущая Оглавление Следующая >>


4.3 Триггеры

Триггер (trigger) — это специальная программа, назначаемая таблице или представлению. Триггер вызывается СУБД, когда пользователь за­прашивает вставку, обновление или удаление строки из таблицы или пред­ставления, которому принадлежит данный триггер. Триггеры для Oracle можно писать на собственном языке программирования этой СУБД, но­сящим название PL/SQL (Programming Language for SQL - язык програм­мирования для SQL), или на Java.

Oracle поддерживает три вида триггеров: предваряющие (BEFORE), замещающие (INSTEAD OF) и завершающие (AFTER). Как и логично было бы ожидать, предваряющие триггеры вызываются перед обработ­кой запроса на вставку, обновление или удаление, замещающие - вместо него, а завершающие - после обработки запроса. Всего имеется девять воз­можных типов триггеров: предваряющий триггер вставки, обновления и удаления, замещающий триггер вставки, обновления и удаления и завер­шающий триггер вставки, обновления и удаления.

При запуске триггера СУБД предоставляет доступ к вставляемым, об­новляемым или удаляемым из тела триггера данным. В случае вставки триггеру доступны значения столбцов новой строки, в случае удаления — значения столбцов удаляемой строки, а в случае обновления триггер мо­жет оперировать как новыми, так и старыми значениями.

В Oracle для получения новых значений необходимо добавить к имени столбца префикс :new. Так, например, при вставке в таблицу CUSTOMER переменная :new.Name содержит значение столбца Name вставляемой строки. В случае обновления переменная :new.Name содержит значение, которое будет иметь столбец Name после выполнения запроса. Аналогич­ным образом, для получения старых значений необходимо добавить к име­ни интересующего нас столбца префикс :old. Например, при удалении пе­ременная :old.Name содержит значение столбца Name удаляемой строки. В случае обновления эта переменная содержит значение столбца Name до выполнения запроса.

Триггеры имеют множество применений. Основные из них: проверка допустимости вводимых данных, присваивание значений по умолчанию, обновление представлений и обеспечение ссылочной целостности.

 



<< Предыдущая Оглавление Следующая >>