Trigeri pret kursoriem
Datu bāzē trigeris ir procedūra (koda segments), kas tiek izpildīta automātiski, kad tabulā/skatā notiek konkrēti notikumi. Citu lietojumu vidū trigerus galvenokārt izmanto datu bāzes integritātes uzturēšanai. Kursors ir vadības struktūra, ko izmanto datu bāzēs, lai izietu cauri datu bāzes ierakstiem. Tas ir ļoti līdzīgs iteratoram, ko nodrošina daudzas programmēšanas valodas.
Kas ir aktivizētāji?
Trigers ir procedūra (koda segments), kas tiek izpildīta automātiski, kad datu bāzes tabulā/skatā notiek konkrēti notikumi. Citu lietojumu vidū trigerus galvenokārt izmanto datu bāzes integritātes uzturēšanai. Trigeri tiek izmantoti arī uzņēmējdarbības noteikumu izpildei, datu bāzē veikto izmaiņu auditēšanai un datu pavairošanai. Visizplatītākie trigeri ir datu manipulācijas valodas (DML) aktivizētāji, kas tiek aktivizēti, kad tiek veiktas manipulācijas ar datiem. Dažas datu bāzu sistēmas atbalsta ar datiem nesaistītus aktivizētājus, kas tiek aktivizēti, kad notiek datu definīcijas valodas (DDL) notikumi. Daži piemēri ir trigeri, kas tiek aktivizēti, kad tiek izveidotas tabulas, tiek veiktas apņemšanās vai atcelšanas darbības utt. Šos trigerus var īpaši izmantot auditēšanai. Oracle datu bāzes sistēma atbalsta shēmas līmeņa aktivizētājus (t.i., aktivizētājus, kas tiek aktivizēti, kad datu bāzes shēmas tiek modificētas), piemēram, pēc izveides, pirms maiņas, pēc maiņas, pirms nomešanas, pēc nomešanas utt. Oracle atbalstītie četri galvenie trigeru veidi ir rindas līmeņa aktivizētāji, Kolonnas līmeņa aktivizētāji, katra rindas veida aktivizētāji un katra paziņojuma veida aktivizētāji.
Kas ir kursori?
Kursors ir vadības struktūra, ko izmanto datu bāzēs, lai izietu cauri datu bāzes ierakstiem. Tas ir ļoti līdzīgs iteratoram, ko nodrošina daudzas programmēšanas valodas. Papildus ierakstu pārvietošanai datu bāzē kursori atvieglo arī datu izgūšanu, ierakstu pievienošanu un dzēšanu. Nosakot pareizo ceļu, kursorus var izmantot arī, lai pārvietotos atpakaļ. Kad SQL vaicājums atgriež rindu kopu, tās faktiski tiek apstrādātas, izmantojot kursorus. Lai kursoru varētu izmantot, tas ir jādeklarē un tam jāpiešķir nosaukums. Pēc tam kursors ir jāatver, izmantojot komandu OPEN. Šī darbība novietotu kursoru tieši pirms rezultātu kopas ierakstu pirmās rindas. Pēc tam kursoram ir jāveic FETCH darbība, lai lietojumprogrammā faktiski nonāktu datu rinda. Visbeidzot, kursors ir jāaizver, izmantojot CLOSE darbību. Slēgtos kursorus var atvērt vēlreiz.
Kāda ir atšķirība starp aktivizētājiem un kursoriem?
Trigers ir procedūra (koda segments), kas tiek izpildīta automātiski, kad datu bāzes tabulā/skatā notiek daži konkrēti notikumi, savukārt kursors ir vadības struktūra, ko datu bāzēs izmanto, lai izietu cauri datu bāzes ierakstiem. Kursoru var deklarēt un izmantot trigerā. Šādā situācijā deklarācijas paziņojums būtu sprūda iekšpusē. Tad kursora darbības joma tiktu ierobežota līdz šim aktivizētājam. Trigera ietvaros, ja kursors ir deklarēts uz ievietotas vai dzēstas tabulas, šāds kursors nebūtu pieejams no ligzdotā trigera. Kad aktivizētājs ir pabeigts, visi aktivizētājā izveidotie kursori tiks atcelti.