Триггер на изменение оценки
Изменения, вносимые в элементы данных, которые в своей предметной области имеют существенное значение и подлежат усиленному контролю, обычно фиксируются в журналах изменений. В базах данных такие журналы могут представлять собой обычные таблицы и формироваться при помощи триггеров. Триггеры, предназначенные для контроля изменений в важных таблицах, могут быть написаны и на вставку, и на удаление, и на обновление. Однако злоупотреблять этой замечательной возможностью все же не следует, поскольку каждый дополнительный триггер снижает производительность системы.
В нашей демонстрационной базе данных, очевидно, имеет смысл контролировать изменение уже выставленной оценки. Поэтому создадим специальную таблицу change_mark_log (журнал изменений оценок), которая будет содержать столбы:
· name_user (имя пользователя, изменившего оценку)
· date_change (дата изменения оценки)
· cod_st (код студента)
· cod_sub (код предмета)
· old_mark (старая оценка)
· new_mark (новая оценка)
Теперь создадим триггер на обновление:
create trigger mark_change
AFTER UPDATE on marks
for each row
begin
IF :OLD.mark<> :NEW.mark THEN
INSERT INTO change_mark_log
VALUES(user, sysdate, :OLD.cod_st, :OLD.cod_sub, :OLD.mark, :NEW.mark);
END IF;
end;
Дата добавления: 2015-08-26; просмотров: 843;