You are on page 1of 8

TRIGGERS

Sadraj: 1.to su triggeri?........................................................................................................... ...-3 2. Vrste triggera................................................................................................................-32.1 Before triggers......................................................................................................-52.2 After triggers.........................................................................................................-63. Naini okidanja........................................................................................................... ....-73.1 Row triggers......................................................................................................-73.2 Statement triggers...............................................................................................-74. Zakljuak........................................................................................................................-85. Literatura........................................................................................................................-8-

1. to su triggeri? Triggeri su objekti pridrueni nekoj tabeli koji se automatski aktiviraju kada se desi neki dogaaj vezan za tu tabelu. Triggeri se aktiviraju kada se neka promjena pridruenoj tabeli, preciznije, prilikom izvrenja nekih naredbi kao to su Insert/Update/Delete. U prijevodu triggeri su okidai dogaaja u programiranju na serveru baze podataka. Kada se trigger povee s nekom tabelom, trebamo odrediti kada de se aktivirati (before ili after) te napisati kod u SQL-u (slijed naredbi) koje de se pokrenuti i izvriti sa triggerom.

2. Vrste triggera Na tri mogude naredbe i dva moguda okidaa prije ili poslije dobivamo 6 varijanta kada bi se trigger mogao pokrenuti (BEFORE INSERT | AFTER INSERT | BEFORE UPDATE | AFTER UPDATE | BEFORE DELETE | AFTER DELETE) Kod same izrade trigera te imenovanja istih potrebano je slijediti konvenciju oko imena kako bi mogli lake rukovat istima. Unutar MySQL-a triggere moemo administrirat, ali ne u potpunosti kao bazu podataka jer nemaju API za pregled i rukovanje, ved se mogu samo isitati iz tablice servera gdje ih server registrira

MySQL triggeri ne mogu raditi sa svim naredbama SQL jezika za rad i manipulaciju baza podataka, pa se tako mora odrediti da li je potreban trigger ili neka procedura koja ima slian efekt, uz razliku da se ona eksplicitno mora pozvat, dok se trigger aktivira sam, na unaprijed definiran dogaaj. Naredbe sa kojima triggeri ne mogu raditi su:|SHOW | LOAD DATA | LOAD TABLE | BACKUP DATABASE | RESTORE | FLUSH | RETURN | uz te naredbe nemogu se koristiti ni za transakcije |COMMIT | ROLLBACK | START TRANSACTION| I neke osnovne naredbe za rad sa tablicama|LOCK/UNLOCK TABLES | ALTER | CREATE | DROP | RENAME |, ali one imaju svoju funkcionalnost te namjenu u programiranju i radu s baz ama podataka i u trenutku pruaju veliku pomod.

Svaki triger je objek u jednoj bazi podataka i vrijedi samo za tu bazu, ukoliko doe do brisanja baze, takoer de se obrisat i svi njeni okidai

2.1 Before triggers

BEFORE Triggers Kod ovih okidaa je karakteristino to da se dogaaju prije nego to podatak doe do tablice, to nam omoguava da se podatak presretne i izvri eventualna manipulacija nad njim. U tu svrhu MySQL u trenutku unosa, u svojoj memoriji kreira tablicu, koja ima istu strukturu kao i ciljna tablica s razlikom da su podatci te tablice zapravo podatci koji se unose ili mjenjaju

Prva linija koda ovog primjera ini definiciju okidaa (create trigger ProvjeraImena), s naznakom before okidaa za insert naredbu koja se nalazi na tablici Kupci. S obzirom da blok naredba sadri vie od jedne linije koda potrebno je koristiti begin i end oznake Blok naredbi sadri for each row koji ima znaenje da de se sljededa aktivnosti (ili blok aktivnosti) izvravati sve dok ima redova u tablici. Naziv tablice new je tablica nad kojom se vri manipulacija podataka koju u memoriji kreira MySQL server, odnosno okida. Kada se unosi podatak, server nam prua mogudnost da provjerimo ili eventualno izmjenimo taj podatak u tablici new, te kada se izvri izmjenama na tebeli new, tj. kada okida zavri izvravanje, podatci iz tabele new se spremaju u stvarnu tablicu (Kupci). U sluaju ako se koristi naredba Insert, u memoriji se nalazi samo jedna tablica, new. Kada bi okida bio postavljen na tablicu Update ili Delete, u memoriji bi se nalazila i tablica old (u sluaju delete okidaa, ne postoji tablica new, vec old).

Primjer before update okidaa koji radi isto kao proli primjer ali na update naredbi.

2.2 After triggers

After triggers Ova vrsta okidaa aktivira se nakon unosa nekih podataka, to bi znailo da kada smo u kodu okidaa imamo pristup samo onim podacima koji su ved uneeni

Kada se jednom postavi okida na tablicu, on je dio te tablice u kontekstu svih njenih transakcija, to znai da se prilikom auriranja podataka, mora uzet u obzir i izvravanje okidaa te da de se aktivnost smatrat neuspjenom ukolko doe do greke prilikom njegove aktivacije. Ukoliko se javi greka prilikom aktivacije before okidaa, takoer se nede izvrit niti after okida ukoliko se nalaze na istoj naredbi iste tablice.

3. Naini okidanja

Kada se definira okida, potrebna mu je specifikacija broja koliko puta de se trigger pokrenuti (okinuti). Postoje dva moguda stanja: Jednom za svaki red koji je obuhvaden naredbom okidanja, kao kod naredbe Update koja je ukljuena kao auriranje (promjenu) vie redova odjednom Jednom za svaku naredbu okidanja, neovisno koliko redova je zahvadeno tom naredbom

3.1 ROW triggers Row okida pokrede se svaki put izvrena neka naredba. Na primjer, ako koristimo naredbu UPDATE za auriranje vie redova u tablici odjednom, row triger se izvri svkai put jednom za svaki red koji zahvaden Update naredbom. Ukoliko okidaka naredba nema redova, okida se nede izvriti Row trigger je koristan ako kod u naredbama okidaa ovisi o podacima na koje se odnosi ili koje su te naredbe obuhvatile

3.2 Statement triggers Statement trigger je okinut jednom za svaki izvjetaj okidanja u korist broju redova u tablici koje je taj trigger obuhvatio, a moe biti sluaj i da niti jedan red nije obuhvaen Primjer : ako naredbom Delete obriemo nekolko redova u tablici Statement-level okida se izvri samo jednom

4. Zakljuak

Triggeri kao naredbe su pomod korisniku da bi se lake sluio i manipulirao podacima koje unosi u neku bazu podataka, to podrazumjeva vedu kontrolu i lake ispravljanje greke nad tim podacima.

5. Literatura:
http://docs.oracle.com/cd/B10501_01/server.920/a96524/c18trigs.htm#2174 http://www.development.rs/baze-podataka/triggeri-u-mysql/ http://sr.wikipedia.org/wiki/Trigeri

You might also like