(c) Instytut Informatyki Politechniki Poznańskiej
8
Przykład procedury wyzwalanej (2)
• Poniższa procedura sprawdza, czy płaca przyznana asystentowi nie przekracza widełek płacowych dla asystenta.
CREATE OR REPLACE TRIGGER trig_placa_asystenta
BEFORE UPDATE OF placa_pod ON pracownicy
FOR EACH ROW
WHEN ( NEW.ETAT = 'ASYSTENT' )
DECLARE
  v_max NUMBER; v_min NUMBER;
BEGIN
  SELECT placa_min, placa_max INTO v_min, v_max
  FROM etaty WHERE nazwa = :NEW.etat;
  IF :NEW.placa_pod NOT BETWEEN v_min AND v_max THEN
    RAISE_APPLICATION_ERROR(-20001,'Za wysoka placa');
  END IF;
END;