Triggers vs Cursors
V databáze je spúšťač procedúra (segment kódu), ktorá sa vykoná automaticky, keď dôjde k niektorým konkrétnym udalostiam v tabuľke / zobrazení. Spomedzi ďalších použití sa spúšťače používajú hlavne na udržanie integrity v databáze. Kurzor je riadiaca štruktúra používaná v databázach na prechádzanie databázových záznamov. Je veľmi podobný iterátoru poskytovanému mnohými programovacími jazykmi.
Čo sú spúšťače?
Spúšťač je procedúra (segment kódu), ktorá sa vykoná automaticky, keď dôjde k niektorým konkrétnym udalostiam v tabuľke / zobrazení databázy. Spomedzi ďalších použití sa spúšťače používajú hlavne na udržanie integrity v databáze. Spúšťače sa tiež používajú na vynucovanie obchodných pravidiel, audit zmien v databáze a replikáciu údajov. Najbežnejšie spúšťače sú spúšťače jazyka Data Manipulation Language (DML), ktoré sa spúšťajú pri manipulácii s údajmi. Niektoré databázové systémy podporujú spúšťače iných ako dát, ktoré sa spúšťajú, keď dôjde k udalostiam Data Definition Language (DDL). Niektoré príklady sú spúšťače, ktoré sa spúšťajú pri vytváraní tabuliek, pri operáciách potvrdenia alebo vrátenia späť atď. Tieto spúšťače je možné použiť najmä na auditovanie. Databázový systém Oracle podporuje spúšťače na úrovni schémy (tjspúšťače spustené pri úprave databázových schém), ako napríklad After Creation, Before Alter, After Alter, Before Drop, After Drop atď. Štyri hlavné typy spúšťačov podporovaných Oracle sú spúšťače na úrovni riadkov, spúšťače na úrovni stĺpcov, spúšťače každého typu riadkov a Pre každý typ výpisu sa spustí.
Čo sú to kurzory?
Kurzor je riadiaca štruktúra používaná v databázach na prechádzanie databázových záznamov. Je veľmi podobný iterátoru poskytovanému mnohými programovacími jazykmi. Okrem prechádzania záznamami v databáze uľahčujú kurzory aj načítanie údajov, pridávanie a mazanie záznamov. Pri definovaní správneho spôsobu sa kurzory dajú použiť aj na posuv dozadu. Keď dotaz SQL vráti množinu riadkov, tieto sa skutočne spracujú pomocou kurzorov. Pred použitím je potrebné kurzor vyhlásiť a priradiť mu meno. Potom je potrebné otvoriť kurzor pomocou príkazu OPEN. Táto operácia by umiestnila kurzor tesne pred prvý riadok výsledkovej sady záznamov. Potom musí kurzor vykonať operáciu FETCH, aby skutočne dostal do aplikácie riadok údajov. Nakoniec musí byť kurzor zatvorený pomocou operácie ZATVORIŤ. Uzavreté kurzory je možné opäť otvoriť.
Aký je rozdiel medzi spúšťačmi a kurzormi?
Spúšťač je procedúra (segment kódu), ktorá sa vykoná automaticky, keď dôjde k niektorým konkrétnym udalostiam v tabuľke / zobrazení databázy, zatiaľ čo kurzor je riadiaca štruktúra používaná v databázach na prechádzanie databázových záznamov. Kurzor je možné deklarovať a použiť v rámci spúšťača. V takejto situácii by vyhlásenie bolo vo vnútri spúšťača. Potom by bol rozsah kurzora obmedzený na tento spúšťač. Ak je v spúšťači deklarovaný kurzor na vloženej alebo odstránenej tabuľke, takýto kurzor by nebol prístupný z vnoreného spúšťača. Po dokončení spúšťača budú všetky kurzory vytvorené v rámci spúšťača zrušené.