Okidači protiv kursora
U bazi podataka, okidač je procedura (segment koda) koja se automatski izvršava kada se neki određeni događaj dogodi u tablici/prikazu. Između ostalih upotreba, okidači se uglavnom koriste za održavanje integriteta u bazi podataka. Kursor je kontrolna struktura koja se koristi u bazama podataka za prolazak kroz zapise baze podataka. Vrlo je sličan iteratoru koji pružaju mnogi programski jezici.
Što su okidači?
Okidač je procedura (segment koda) koja se automatski izvršava kada se dogode neki specifični događaji u tablici/prikazu baze podataka. Između ostalih upotreba, okidači se uglavnom koriste za održavanje integriteta u bazi podataka. Okidači se također koriste za provođenje poslovnih pravila, reviziju promjena u bazi podataka i repliciranje podataka. Najčešći okidači su okidači Data Manipulation Language (DML) koji se pokreću kada se manipulira podacima. Neki sustavi baza podataka podržavaju nepodatkovne okidače, koji se pokreću kada se dogode događaji Data Definition Language (DDL). Neki primjeri su okidači koji se pokreću kada se kreiraju tablice, tijekom operacija izvršavanja ili vraćanja, itd. Ovi se okidači mogu posebno koristiti za reviziju. Sustav baze podataka Oracle podržava okidače na razini sheme (tj. okidače koji se pokreću kada se sheme baze podataka mijenjaju) kao što su After Creation, Prije izmjene, Nakon izmjene, Prije ispuštanja, Nakon ispuštanja, itd. Četiri glavne vrste okidača koje podržava Oracle su okidači na razini retka, Okidači na razini stupca, okidači za svaku vrstu retka i okidači za svaku vrstu izjave.
Što su kursori?
Kursor je kontrolna struktura koja se koristi u bazama podataka za prolazak kroz zapise baze podataka. Vrlo je sličan iteratoru koji pružaju mnogi programski jezici. Osim kretanja kroz zapise u bazi podataka, kursori također olakšavaju pronalaženje podataka, dodavanje i brisanje zapisa. Definiranjem ispravnog puta, pokazivači se također mogu koristiti za kretanje unatrag. Kada SQL upit vrati skup redaka, oni se zapravo obrađuju pomoću kursora. Kursor mora biti deklariran i dodijeljen mu je naziv prije nego što se može koristiti. Tada kursor treba otvoriti naredbom OPEN. Ova bi operacija postavila kursor neposredno prije prvog retka skupa rezultata zapisa. Tada kursor mora izvršiti operaciju FETCH kako bi stvarno dobio red podataka u aplikaciji. Na kraju, kursor se mora zatvoriti operacijom CLOSE. Zatvoreni kursori se mogu ponovno otvoriti.
Koja je razlika između okidača i kursora?
Okidač je procedura (segment koda) koja se automatski izvršava kada se dogode neki specifični događaji u tablici/prikazu baze podataka, dok je kursor kontrolna struktura koja se koristi u bazama podataka za prolazak kroz zapise baze podataka. Kursor se može deklarirati i koristiti unutar okidača. U takvoj situaciji naredba declare bila bi unutar okidača. Tada bi opseg pokazivača bio ograničen na taj okidač. Unutar okidača, ako je pokazivač deklariran na umetnutoj ili izbrisanoj tablici, takav kursor neće biti dostupan iz ugniježđenog okidača. Nakon što se okidač dovrši, svi pokazivači stvoreni unutar okidača bit će poništeni.