Triggery

background image

Triggery

Gwidon Jóźwiak, 171864

background image

Co to i do czego nam triggery?

• Procedury wyzwalane automatycznie

w reakcji na zdarzenia w tabeli lub
bazie danych

• W standardzie SQL od wersji 99

(1999r.)

2

background image

Kiedy są wywoływane?

 Wywoływane dla INSERT, UPDATE lub DELETE
 Wyzwalacze metadanych (Oracle), DDL

(MsSQL)

 Wywołanie BEFORE (przed), AFTER (po),

INSTEAD OF (zamiast)

 Wywoływanie dla tabel, widoków, schematów

(kont użytkowników), całej bazy

 Wywołanie dla całej tabeli, poszczególnych

wierszy lub kolumn

 Multitriggery (Oracle)

3

background image

Wyzwalacze metadanych i DDL

• Zdarzenia bazodanowe:

SERVERERROR, LOGON, LOGOFF,
STARTUP lub SHUTDOWN

• Zdarzenia DDL: CREATE, ALTER,

DROP, GRANT, REVOKE

4

background image

Multitriggery

create or replace trigger xyz_validator
after delete or update or insert on xyz
for each row
begin

if deleting then
-- ...
end if;
if updating then
-- ...
end if;
if inserting then
-- ...
end if;

EXCEPTION ... end;

5

background image

Główne cechy

• Nie mogą mieć parametrów
• Nie mogą zatwierdzać (COMMIT) ani

wycofywać (ROLLBACK) transakcji

• Mogą generować dodatkowe błędy

(jeśli są źle napisane)

6

background image

Składnia

CREATE [OR REPLACE] TRIGGER
nazwa_wyzwalacza
[BEFORE|AFTER|INSTEAD OF]
[zdarzenie_bazodanowe|zdarzenie_DDL
ON [DATABASE|SCHEMA] 

7

background image

Składnia - przykład

CREATE TRIGGER Log_errors AFTER

SERVERERROR ON DATABASE 
BEGIN
  IF (IS_SERVERERROR (1017)) THEN
      <wykonaj specjalną obsługę w tym
przypadku
>
  ELSE
     <zapisz w dzienniku informację o
błędzie
>
  END IF;
END;

8

background image

Old i new

• Old – po zmianie
• New – przed zmianą
• W Oracle poprzedzone :
• W MSSQL poprzedzone @
• W MySQL REFERENCING NEW ROW

AS n, OLD ROW AS o

9

background image

Tabele INSERTED i DELETED

• Mają taką samą strukturę jak tabela

modyfikowana

• Istnieją tylko podczas działania

wyzwalacza

• DELETED przy DELETE i UPDATE
• INSERTED przy INSERT i UPDATE

10

background image

INSERTED i DELETED przykład

CREATE TRIGGER modyfikacja
ON pracownicy
AFTER INSERT, UPDATE, DELETE
AS

print 'liczba zmodyfikowanych

wierszy: ' + str(@@rowcount)

print 'Wiersze usuniete:'

select * from deleted

print 'Wiersze dodane:'

select * from inserted

11

background image

Przykład MySQL

CREATE TRIGGER pensja_trigger
BEFORE UPDATE ON

pracownicy_table
REFERENCING NEW ROW AS n,
OLD ROW AS o FOR EACH ROW IF
n.pensja <> o.pensja THEN --wykonaj
odpowiednie działania; END IF;

12

background image

Włączanie i wyłączanie

ALTER TRIGGER wyzwalacz {ENABLE|

DISABLE};

DROP TRIGGER wyzwalacz;

13

background image

Czego nie wolno

• „Grzebać” w tabeli, dla której trigger

jest wywoływany

• Wywoływać UPDATE
• Nie mogą zatwierdzać (COMMIT) ani

wycofywać (ROLLBACK) transakcji

14

background image

Główne zastosowania

• Ochrona przed zmianami
• Rejestracja zmian
• Egzekwowanie reguł biznesowych
• Zwiększenia wydajności

15

background image

KONIEC

Pytania?


Document Outline


Wyszukiwarka

Podobne podstrony:
Manual therapy for trigger points
widoki procedury triggery obsluga ksiegowej, WAT, semestr VI, Hurtownie danych
trigger w oracle
Wyzwalacz, PWR, Semestr 5, Bazy danych 2, Triggery
High speed photography sound trigger ZPT
triggeryBL6
Trigger points
The Triggered Dimension Harry Bates
James H Schmitz Trigger & Friends
Inhibitory Effect of Dry Needling on the Spontaneous Electrical Activity Recorded from Myofascial Tr
Europeans to trigger Iran nuclear deal dispute mechanism Reuters
SN74121 MONOSTABLE MULTIVIBRATORS WITH SCHMITT TRIGGER INPUTS
Triggers Joseph Sugarman
SN7474 DUAL D TYPE POSITIVE EDGE TRIGGERED FLIP FLOP
Schmitt trigger

więcej podobnych podstron