5 1 TRG, WAT, semestr III, Bazy danych


Wyzwalacz, trigger - procedura wykonywana na serwerze bazodanowym

w określonym momencie, na przykład dopisania nowego rekordu do tabeli, edycji rekordu w tabeli, skasowanie rekordu z tabeli.

Zastosowanie:

[http://pl.wikipedia.org/wiki/Wyzwalacz]

  1. Kiedy [BEFORE, AFTER]

  2. Zdarzenie [INSERT/UPDATE/DELETE]

  3. Zakres [STATEMENT/EACH ROW]

CREATE OR REPLACE

TRIGGER nazwa_wyzwalacza

{ BEFORE | AFTER | INSTEAD OF }

{ DELETE | INSERT | UPDATE

[ OF kolumna, [, kolumna ] … ] }

[ OR { DELETE | INSERT | UPDATE

[ OF kolumna, [, kolumna ] ] } ]

ON tabela

[ FOR EACH ROW [ WHEN (warunek) ] ]

blok pl/sql

Szczegóły składni [1] Strona 16-75

BEFORE

Klauzuli BEFORE używamy aby uruchomić wyzwalacz przed zdarzeniem go wywołującym.

Dla wyzwalaczy działających na wierszach , wyzwalacz jest uruchamiany przed zmianą każdego wiersza.

Ograniczenia:

- Nie można utworzyć wyzwalacza BEFORE na obiektach VIEW lub OBJECT VIEW.

- Można ustalać wartości dla zmiennych :NEW ale nie dla :OLD

CREATE OR REPLACE TRIGGER T1

BEFORE

INSERT OR UPDATE

ON TABELA

REFERENCING NEW AS NEW OLD AS OLD

FOR EACH ROW

BEGIN

NULL;

END;

/

AFTER

Klauzuli AFTER używamy aby uruchomić wyzwalacz po zdarzeniu go wywołującym.

Dla wyzwalaczy działających na wierszach , wyzwalacz jest uruchamiany po zmianie każdego wiersza.

Ograniczenia:

- Nie można utworzyć wyzwalacza BEFORE na obiektach VIEW lub OBJECT VIEW.

- Ne można ustalać wartości dla zmiennych :NEW i :OLD

CREATE OR REPLACE TRIGGER T1

AFTER

INSERT OR UPDATE

ON TABELA

REFERENCING OLD AS OLD NEW AS NEW

FOR EACH ROW

BEGIN

NULL;

END;

/

AFTER [INSERT/UPDATE] ON KOLUMNA

CREATE OR REPLACE TRIGGER T1

AFTER

INSERT OR UPDATE OF TABELA

ON KOLUMNA

REFERENCING OLD AS OLD NEW AS NEW

FOR EACH ROW

BEGIN

NULL;

END;

/

STATEMENT

CREATE OR REPLACE TRIGGER T1

AFTER

INSERT OR DELETE OR UPDATE OF TABELA

ON KOLUMNA

REFERENCING OLD AS OLD NEW AS NEW

BEGIN

NULL;

END;

/

Klauzula WHEN

WHEN (NEW.SAL < 100) (NEW bez znaku :)

Włączenie/ Wyłączanie pojedynczego wyzwalacza:

ALTER TRIGGER NAZWA_TRG DISABLE;

ALTER TRIGGER NAZWA_TRG ENABLE;

Włączenie/ Wyłączanie wszystkich wyzwalaczy na tabeli:

ALTER TABLE TABELA DISABLE ALL TRIGGERS;

ALTER TABLE TABELA ENABLE ALL TRIGGERS;

Wyzwalacze systemowe

BEFORE LOGON

BEFORE CREATE

BEFORE ALTER

BEFORE DROP

BEFORE AUDIT

BEFORE NOAUDIT

BEFORE DDL

BEFORE GRANT

BEFORE RENAME

BEFORE REVOKE

AFTER LOGON

AFTER CREATE

AFTER ALTER

AFTER DROP

AFTER AUDIT

AFTER NOAUDIT

AFTER DDL

AFTER GRANT

AFTER RENAME

AFTER REVOKE

CREATE OR REPLACE TRIGGER TRG1

AFTER LOGON ON SCHEMA

BEGIN

INSERT INTO TABELA

(KOMUNIKAT

)

VALUES ('zalogowano sie' || SYSDATE

);

END;

Obsługa rodzaju instrukcji DML

BEGIN

IF INSERTING THEN

NULL;

END IF;

IF UPDATING THEN

NULL;

END IF;

END;

Literatura:

[1] Oracle® Database SQL Reference 10g Release 2 (10.2) B14200-020x01 graphic
0x01 graphic
0x01 graphic



Wyszukiwarka

Podobne podstrony:
bdsciaga, WAT, semestr III, Bazy danych
bdsprawko, WAT, semestr III, Bazy danych
pytania, WAT, semestr III, Bazy danych
caerm, WAT, semestr III, Bazy danych
ASO kolo test, WAT, semestr III, Bazy danych
5 Zadania PL-SQL1a, WAT, semestr III, Bazy danych
bd wyklad1, WAT, semestr III, Bazy danych
sprawko BD, WAT, semestr III, Bazy danych
5 2 PLSQL-Basic, WAT, semestr III, Bazy danych
sprawozdanie SKLEP SPOŻYWCZY Rafał Sylwestrzuk(1), WAT, semestr III, Bazy danych
wyrazenia, WAT, semestr III, Bazy danych
bdsprawko(2), WAT, semestr III, Bazy danych
moja, WAT, semestr III, Bazy danych
sciaga bazd danych, WAT, semestr III, Bazy danych

więcej podobnych podstron