Triggers vs Cursors
I en database er en trigger en procedure (kodesegment), der udføres automatisk, når nogle specifikke hændelser opstår i en tabel/visning. Blandt dens andre anvendelser bruges triggere hovedsageligt til at opretholde integritet i en database. En markør er en kontrolstruktur, der bruges i databaser til at gå gennem databaseposterne. Den minder meget om iteratoren fra mange programmeringssprog.
Hvad er triggere?
En trigger er en procedure (kodesegment), der udføres automatisk, når nogle specifikke hændelser opstår i en tabel/visning af en database. Blandt dens andre anvendelser bruges triggere hovedsageligt til at opretholde integritet i en database. Triggere bruges også til at håndhæve forretningsregler, revidere ændringer i databasen og replikere data. De mest almindelige udløsere er DML-udløsere (Data Manipulation Language), der udløses, når data manipuleres. Nogle databasesystemer understøtter ikke-data-triggere, som udløses, når Data Definition Language (DDL)-hændelser opstår. Nogle eksempler er triggere, der udløses, når tabeller oprettes, under commit- eller rollback-operationer, osv. Disse triggere kan især bruges til revision. Oracle-databasesystemet understøtter triggere på skemaniveau (dvs. triggere, der udløses, når databaseskemaer ændres) såsom After Creation, Before Alter, After Alter, Before Drop, After Drop osv. De fire hovedtyper af triggere, der understøttes af Oracle, er Row Level-triggere, Kolonneniveauudløsere, hver rækketypeudløsere og for hver udsagnstypeudløsere.
Hvad er markører?
En markør er en kontrolstruktur, der bruges i databaser til at gennemgå databaseposterne. Den minder meget om iteratoren fra mange programmeringssprog. Ud over at gå gennem poster i en database, letter markører også datahentning, tilføjelse og sletning af poster. Ved at definere den korrekte måde, kan markørerne også bruges til at gå baglæns. Når en SQL-forespørgsel returnerer et sæt rækker, behandles disse faktisk ved hjælp af markører. En markør skal erklæres og tildeles et navn, før den kan bruges. Derefter skal markøren åbnes med OPEN-kommandoen. Denne operation ville placere markøren lige før den første række i resultatsættet af poster. Derefter skal markøren udføre FETCH-operationen for faktisk at få en række data ind i applikationen. Til sidst skal markøren lukkes ved at bruge CLOSE operationen. Lukkede markører kan åbnes igen.
Hvad er forskellen mellem triggere og markører?
En trigger er en procedure (kodesegment), der udføres automatisk, når nogle specifikke hændelser opstår i en tabel/visning af en database, mens en markør er en kontrolstruktur, der bruges i databaser til at gå gennem databaseposterne. En markør kan erklæres og bruges i en trigger. I en sådan situation ville erklæringen være inde i udløseren. Så ville markørens omfang være begrænset til den udløser. Inden for en trigger, hvis en markør er erklæret på en indsat eller en slettet tabel, vil en sådan markør ikke være tilgængelig fra en indlejret trigger. Når en trigger er fuldført, vil alle de markører, der er oprettet i triggeren, blive de-allokeret.