Triggers versus cursors
In een database is een trigger een procedure (codesegment) die automatisch wordt uitgevoerd wanneer bepaalde specifieke gebeurtenissen in een tabel / weergave plaatsvinden. Andere triggers worden onder andere gebruikt voor het handhaven van integriteit in een database. Een cursor is een besturingsstructuur die in databases wordt gebruikt om de databaserecords te doorlopen. Het lijkt erg op de iterator die door veel programmeertalen wordt geboden.
Wat zijn Triggers?
Een trigger is een procedure (codesegment) die automatisch wordt uitgevoerd wanneer bepaalde specifieke gebeurtenissen voorkomen in een tabel / weergave van een database. Andere triggers worden onder andere gebruikt voor het handhaven van integriteit in een database. Triggers worden ook gebruikt voor het afdwingen van bedrijfsregels, het controleren van wijzigingen in de database en het repliceren van gegevens. De meest voorkomende triggers zijn DML-triggers (Data Manipulation Language) die worden geactiveerd wanneer gegevens worden gemanipuleerd. Sommige databasesystemen ondersteunen niet-gegevens-triggers, die worden geactiveerd wanneer DDL-gebeurtenissen (Data Definition Language) plaatsvinden. Enkele voorbeelden zijn triggers die worden geactiveerd wanneer tabellen worden gemaakt, tijdens commit- of rollback-bewerkingen, enzovoort. Deze triggers kunnen met name worden gebruikt voor auditing. Oracle-databasesysteem ondersteunt schema-niveau-triggers (dwz triggers geactiveerd wanneer databaseschema's worden gewijzigd), zoals After Creation, Before Alter, After Alter, Before Drop, After Drop, etc. De vier hoofdtypen van triggers die worden ondersteund door Oracle zijn Row Level-triggers, Kolomniveau-triggers, elk rijtype wordt geactiveerd en voor elk type instructie-type triggers.
Wat zijn cursors?
Een cursor is een besturingsstructuur die in databases wordt gebruikt om de databaserecords te doorlopen. Het lijkt erg op de iterator die door veel programmeertalen wordt geboden. Naast het doorlopen van records in een database, vergemakkelijken cursors ook het ophalen van gegevens, het toevoegen en verwijderen van records. Door de juiste manier te definiëren, kunnen cursors ook worden gebruikt om achteruit te lopen. Wanneer een SQL-query een reeks rijen retourneert, worden deze daadwerkelijk verwerkt met cursors. Een cursor moet worden gedeclareerd en een naam krijgen, voordat deze kan worden gebruikt. Vervolgens moet de cursor worden geopend met de opdracht OPEN. Deze bewerking plaatst de cursor vlak voor de eerste rij van de resultaatset records. Vervolgens moet de cursor de FETCH-bewerking uitvoeren om daadwerkelijk een rij met gegevens in de toepassing te krijgen. Ten slotte moet de cursor worden gesloten met de bewerking DICHT. Gesloten cursors kunnen opnieuw worden geopend.
Wat is het verschil tussen triggers en cursors?
Een trigger is een procedure (codesegment) die automatisch wordt uitgevoerd wanneer bepaalde specifieke gebeurtenissen voorkomen in een tabel / weergave van een database, terwijl een cursor een besturingsstructuur is die in databases wordt gebruikt om de databaserecords te doorlopen. Een cursor kan worden gedeclareerd en gebruikt binnen een trigger. In een dergelijke situatie zou de declare-verklaring in de trigger zitten. Dan zou het bereik van de cursor beperkt blijven tot die trigger. Binnen een trigger, als een cursor wordt gedeclareerd in een ingevoegde of een verwijderde tabel, zou een dergelijke cursor niet toegankelijk zijn vanuit een geneste trigger. Zodra een trigger is voltooid, worden alle cursors die in de trigger zijn gemaakt, gede-alloceerd.