Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Készítette: Sárközi Anikó.  Tárolt eljárások amelynek lefutását egy esemény váltja ki, pl. egy új rekord beszúrása…  Lehetőségünk van például olyan.

Hasonló előadás


Az előadások a következő témára: "Készítette: Sárközi Anikó.  Tárolt eljárások amelynek lefutását egy esemény váltja ki, pl. egy új rekord beszúrása…  Lehetőségünk van például olyan."— Előadás másolata:

1 Készítette: Sárközi Anikó

2  Tárolt eljárások amelynek lefutását egy esemény váltja ki, pl. egy új rekord beszúrása…  Lehetőségünk van például olyan logikai hibák megakadályozására, amelyeket egy egyszerü CHECK paranccsal nem lehetne megakadályozni.  Egy le nem írt konvenció szerint úgy illik elnevezni a triggereket, hogy a nevükben látható legyen valamilyen formában a táblázat és a parancsok, amikhez a triggert létrehozták  Példa…

3  „Korlátozás”  korlátozza azt az értéktartományt amit egy mezőbe lehet írni  Egy mező értékét korlátozhatjuk egy logikai kifejezés értékével, a logikai kifejezésben más mezők értékeit is szerepeltethetjük  WARNING: a Mysql-ben nincs…!!!!!van..de mégsincs…

4 CREATE TABLE Persons ( Kor int NOT NULL, Nev varchar(255) NOT NULL, CHECK (Kor>200) ) Utólagos hozzáadás: ALTER TABLE Persons ADD CHECK (Kor>200)

5 Események típusa szerint:  DML trigger(Data Manipulation Language),  DDL trigger(Data Definition Language),  Logon trigger.

6  Táblákon vagy nézeteken hajtódik végre  Akkor aktiválódik ha valamilyen DML esemény történik  DML Események: INSERT, UPDATE, DELETE  Módok:  BEFORE (INSTEAD OF)  AFTER

7  Mindhárom esemény esetén (INSERT, UPDATE, DELETE) a parancs előtt hajtódik végre.  Lehetőségünk van, saját hiba generálásával megakadályozni a művelet végrehajtódását

8  A trigger egy INSERT, UPDATE vagy DELETE parancs futtatása után (amikor az adatok már módosultak) hajtódik végre.  Ha a triggerben a tranzakciót visszavonjuk, akkor az adatokat az adatbáziskezelő törli.(rollback)  Ha a triggerben mindent rendben találunk, akkor a módosításokat elfogadjuk

9  Egy táblához legfeljebb 3 trigger készíthető(INSERT, UPDATE, DELETE),  Parancsonként legfeljebb egy, vagyis egy parancshoz vagy AFTER vagy BEFORE  Egy triggert több parancshoz is köthetünk pl: INSERT-UPDATE parancsoknál történő ellenőrzések megegyeznek

10 T-SQL(Transact-SQL):  Microsoft SQL megvalósítása  Programozási szerkezetekkel egészíti ki a nyelvet  Segítségével olyan sql-t tartalmazó programokat írhatunk,amelyekben a szokványos programozási szerkezetek is megtalálhatók (változók, feltételes szerkezetek, ciklusok, eljárások-függvények)  Pl:Microsoft SQL Server 2000, 2005

11  T-SQL szintaxis: CREATE TRIGGER ON { BEFORE | AFTER } AS : … : annak a táblázatnak a neve amelyre az adatbanknak alkalmaznia kell a triggert : INSERT | UPDATE | DELETE : egy parancs vagy blokk amit a trigger a meghívásakor végrehajt

12 CREATE TRIGGER ins_upd_Beszallito ON Beszallito AFTER INSERT, UPDATE AS BEGIN IF UPDATE(BeszallitoID) BEGIN ROLLBACK TRANSACTION END

13  A triggerekben (triggertől függően) létezik két speciális tábla.  A felépítésük megegyezik az INSERT, UPDATE vagy DELETE parancs cél-táblájának felépítésével.  MS SQL Servernél:  „inserted”:Ebben a táblában csak az új (beillesztett vagy beillesztendő) adatok szerepelnek.  „deleted”:Ebben a táblában csak a régi (törölt vagy törlendő) adatok szerepelnek.

14  Egy INSERT parancs esetében csak az "inserted" táblázat, míg az UPDATE parancsnál mindkettő létezik.  A DELETE parancsnál már csak a "deleted" táblázat létezik.  Mysql-es pl: NEW.nev,NEW.tel, OLD.nev,OLD.tel,

15 PL/SQL :  Az Oracle által kifejlesztett programozási nyelv  Oracle adatbáziskezelőt használva ezen a nyelven írhatunk triggereket és más tárolt eljárásokat.  A nyelv alapja az Ada programozási nyelv(strukturált, típusos, blokkszerkezetes, imperatív p.ny.)  magában foglalja az SQL nyelvet(SELECT, INSERT, DELETE, UPDATE illetve OPEN, FETCH, CLOSE utasításait )

16  PL/SQL: CREATE [OR REPLACE] TRIGGER {BEFORE|AFTER} {INSERT|DELETE|UPDATE} ON [REFERENCING [NEW AS ] [[OLD AS ]] [FOR EACH ROW [WHEN ( )]] : a táblázat neve, amelyben az új adatok szerepelnek (default: ":NEW") : a táblázat neve, amelyben a régi adatok szerepelnek (default: ":OLD") : egy feltétel, amely fennállása a trigger meghívásához vezet. Más esetben a trigger nem lesz meghívva. : egy PL/SQL parancs vagy blokk, amelyben a trigger programkódja van.

17 REFERENCING: nem kötelező megadni. Ilyen esetben a fent nevezett default értékek lesznek véve. FOR EACH ROW: a PL/SQL előnye T-SQL-el szemben, hogy ennek a paraméternek a megadásával a szerver kényszerítve lesz, hogy a trigger például egy INSERT INTO (SELECT * FROM …); parancs minden sorára egyenként hívja meg. Ha a FOR EACH ROW-t nem írjuk oda, a trigger parancsonként lesz meghívva. A PL/SQL ilyenkor ugyan úgy fog viselkedni, mint a T-SQL.

18  Olyan mint a hagyományos triggerek  Rövid tárolású események amik egy eljárás bekövetkeztére jönnek létre  Ezek az események elsősorban tranzakciós sql parancsokra reagálnak(CREATE, ALTER, DROP)  Bizonyos rendszer tárolású események amik kezelnek DDL szerű műveleteket szintén indíthatnak DDL triggereket.  Csak az őket kiváltó DDL állapot befejezte után futnak le.  A DDL triggereket nem lehet INSTED OF triggerként használni

19  Felhasználás:  Adminisztráció feladatok:auditálás,adatbázis-sémák szabályozása  adatbázis-sémák bizonyos változtatásainak megakadályozása  Azt akarod valamitől, hogy történjen az adatbázisban egy az adatbázis-sémádban bekövetkező változásra adott válaszban.  Változásokat vagy eseményeket akarsz felvenni az adatbázis-sémában.

20  Példa:hogy lehet megakadályozni DDL triggerrel, hogy módosítsák vagy eldobják a táblánk, vagy adatbázisunk? CREATE TRIGGER biztonsági ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT ‘Kapcsold ki a „biztonsági" triggert, hogy tudd eldobni és módosítani a táblát ROLLBACK ;

21


Letölteni ppt "Készítette: Sárközi Anikó.  Tárolt eljárások amelynek lefutását egy esemény váltja ki, pl. egy új rekord beszúrása…  Lehetőségünk van például olyan."

Hasonló előadás


Google Hirdetések