Rozdzial 11: Procedury wyzwalane (triggery) - PowerPoint PPT Presentation

About This Presentation
Title:

Rozdzial 11: Procedury wyzwalane (triggery)

Description:

Title: Procedury wyzwalane Subject: Systemy Baz Danych Author: Instytut Informatyki Last modified by: Krzysztof Jankiewicz Created Date: 6/4/1997 7:48:20 AM – PowerPoint PPT presentation

Number of Views:50
Avg rating:3.0/5.0
Slides: 10
Provided by: Instyt
Category:

less

Transcript and Presenter's Notes

Title: Rozdzial 11: Procedury wyzwalane (triggery)


1
Rozdzial 11 Procedury wyzwalane (triggery)
(c) 1999, Instytut Informatyki Politechniki
Poznanskiej
2
Procedura wyzwalana
  • procedura wyzwalana (ang. trigger) reaguje na
    zdarzenia zachodzace w bazie danych
  • typy procedur wyzwalanych
  • BEFORE - uruchamiane przed wykonaniem polecenia
  • INSERT, UPDATE, DELETE
  • AFTER - uruchamiane po wykonaniu polecenia
  • INSERT, UPDATE, DELETE
  • FOR EACH ROW - uruchamiane dla kazdej krotki,
    której dotyczy polecenie DML - poziom krotki
  • uruchamiane jednorazowo dla polecenia DML
    (niezaleznie od liczby krotek, której ono
    dotyczy) - poziom relacji

(c) 1999, Instytut Informatyki Politechniki
Poznanskiej
3
Definiowanie procedury wyzwalanej
CREATE OR REPLACE TRIGGER test AFTER DELETE ON
pracownicy BEGIN / cialo procedury wyzwalanej
/ dbms_output.put_line('Krotka relacji
zostala usunieta) END
(c) 1999, Instytut Informatyki Politechniki
Poznanskiej
4
Definiowanie procedury wyzwalanej cd.
  • Dla procedur wyzwalanych uruchamianych na skutek
    uaktualnienia krotek, mozemy okreslic liste
    atrybutów relacji, których uaktualnienie uruchomi
    procedure. Jesli nie podamy listy atrybutów,
    procedura bedzie uruchamiana w wyniku
    uaktualnienia dowolnego sposród atrybutów
    relacji.
  • Ta sama procedura moze byc uruchomiona przez
    kazde sposród trzech polecen DML (tj. INSERT,
    UPDATE, DELETE) lub ich dowolna kombinacje.

CREATE OR REPLACE TRIGGER test AFTER UPDATE OF
placa_pod, id_zesp ON pracownicy ...
CREATE OR REPLACE TRIGGER test AFTER INSERT OR
UPDATE OR DELETE ON pracownicy ...
(c) 1999, Instytut Informatyki Politechniki
Poznanskiej
5
Klauzula FOR EACH ROW i WHEN
CREATE OR REPLACE TRIGGER test BEFORE UPDATE ON
pracownicy FOR EACH ROW WHEN (OLD.placa_dod lt
100) BEGIN ... END
  • w klauzuli WHEN mozna stosowac operatory
    matematyczne, SQL i logiczne, np.
  • wartosci atrybutów testujemy w nastepujacy sposób

(OLD.placa_dod gt30 AND OLD.placa_pod lt100)
IF NEW.placa_podlt100 THEN ...
(c) 1999, Instytut Informatyki Politechniki
Poznanskiej
6
Procedury wyzwalane - przyklad 1
  • zdefiniuj procedure wyzwalana nadajaca nowemu
    pracownikowi kolejny numer - pobierany z licznika

create or replace trigger generuj_numer before
insert on pracownicy for each row begin if
new.id_prac is null then select
seq_pracownik.nextval into new.id_prac from
dual end if end
(c) 1999, Instytut Informatyki Politechniki
Poznanskiej
7
Procedury wyzwalane - przyklad 2
  • zdefiniuj procedure wyzwalana, która uniemozliwi
    zmniejszanie placy podstawowej pracowników (do
    wyswietlania stosownego komunikatu skorzystaj z
    procedury raise_application_error).

create trigger polityka_placowa before update of
placa_pod on pracownicy for each row when
(new.placa_pod lt old.placa_pod) begin raise_appli
cation_error (-25000, 'Niebezpieczenstwo
strajku') end polityka_placowa
(c) 1999, Instytut Informatyki Politechniki
Poznanskiej
8
Zablokowanie i odblokowanie procedury wyzwalanej
  • Kazda procedura wyzwalana moze byc w jednym z
    dwóch stanów odblokowania lub zablokowania. Do
    zablokowania (odblokowania) pojedynczej procedury
    wyzwalanej sluzy polecenie

ALTER TRIGGER nazwa DISABLE ENABLE
  • Wszystkie procedury wyzwalane zwiazane z dana
    relacja mozna zablokowac (odblokowac) pojedynczym
    poleceniem

ALTER TABLE nazwa_relacji DISABLE ENABLE ALL
TRIGGERS
(c) 1999, Instytut Informatyki Politechniki
Poznanskiej
9
Usuwanie procedury wyzwalanej
DROP TRIGGER nazwa
Slownik bazy danych
  • informacje dotyczace procedur wyzwalanych
    zdefiniowanych przez uzytkownika mozna wyswietlic
    korzystajac z perspektywy systemowej o nazwie
    USER_TRIGGERS

(c) 1999, Instytut Informatyki Politechniki
Poznanskiej
Write a Comment
User Comments (0)
About PowerShow.com