Triggers vs Stored Procedures
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 lagret procedure er en metode, der kan bruges af applikationer, der får adgang til en relationel database. Typisk bruges lagrede procedurer som en metode til at validere data og kontrollere adgangen til en database.
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 lagrede procedurer?
En lagret procedure er en metode, der kan bruges af en applikation, der får adgang til en relationel database. Typisk bruges lagrede procedurer som en metode til at validere data og kontrollere adgangen til en database. Hvis en databehandlingsoperation kræver, at flere SQL-sætninger udføres, implementeres sådanne operationer som lagrede procedurer. Når en lagret procedure startes, skal der bruges en CALL- eller EXECUTE-sætning. Lagrede procedurer kan returnere resultater (for eksempel resultater fra SELECT-sætningerne). Disse resultater kan bruges af andre lagrede procedurer eller af applikationer. Sprog, der bruges til at skrive lagrede procedurer, understøtter typisk kontrolstrukturer såsom if, while, for osv. Afhængigt af det anvendte databasesystem, kan flere sprog bruges til at implementere lagrede procedurer (f.eks. PL/SQL og java i Oracle, T- SQL (Transact-SQL) og. NET Framework i Microsoft SQL Server). Ydermere bruger MySQL sine egne lagrede procedurer.
Hvad er forskellen mellem triggere og lagrede procedurer?
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 lagret procedure er en metode, der kan bruges af en applikation, der tilgår en relationel database. Triggere udføres automatisk, når den hændelse, som triggeren skal reagere på, indtræffer. Men for at udføre en lagret procedure skal der bruges en specifik CALL- eller EXECUTE-sætning. Fejlfinding af triggere kan være sværere og vanskeligere end fejlretning af lagrede procedurer. Triggere er meget nyttige, når du vil sikre dig, at der sker noget, når en bestemt hændelse indtræffer.