В Oracle предлагается еще один вид триггеров. Триггеры замещения (instead of) можно создавать только для представлений (либо объектных, либо реляционных). В отличие от триггеров DML, которые выполняются в дополнение к операторам DML, триггеры замещения выполняются вместо операторов DML, вызывающих их срабатывание. Триггеры замещения должны быть строковыми триггерами. Для примера рассмотрим представление classes_rooms:
Ввести информацию непосредственно в это представление нельзя, так как это соединение двух таблиц, и при вводе необходимо модифицировать обе таблицы, как показывает следующий сеанс SQL*Plus:
Однако можно создать триггер замещения и с его помощью выполнить обновление базовых таблиц:
С помощью триггера ClassesRoomsInsert оператор INSERT выполняется успешно и делает именно то, что нужно.
Внимание
В данном случае триггер ClassesRoomsInsert не содержит проверки на ошибки. Ниже, в разделе "Создание триггеров замещения", такая проверка будет добавлена.
< Предыдущая | Следующая > |
---|