En trigger är en lagrad procedur i en databas som automatiskt anropar när en speciell händelse i databasen inträffar. Till exempel kan en utlösare anropas när en rad infogas i en angiven tabell eller när specifika tabellkolumner uppdateras. Med enkla ord är en trigger en samling av SQL satser med särskilda namn som lagras i systemminnet. Den tillhör en specifik klass av lagrade procedurer som automatiskt anropas som svar på databasserverhändelser. Varje trigger har ett bord fäst vid den.
Eftersom en utlösare inte kan anropas direkt, till skillnad från en lagrad procedur, kallas den en speciell procedur. En trigger anropas automatiskt när en datamodifieringshändelse mot en tabell äger rum, vilket är den huvudsakliga skillnaden mellan en trigger och en procedur. Å andra sidan måste en lagrad procedur anropas direkt.
Följande är de viktigaste skillnaderna mellan utlösare och lagrade procedurer:
- Utlösare kan inte anropas eller exekveras manuellt.
- Det finns ingen chans att triggers kommer att ta emot parametrar.
- En transaktion kan inte utföras eller rullas tillbaka inom en trigger.
Syntax:
skapa trigger [trigger_name]
[före | efter]
Föra in
på [tabellnamn]
[för varje rad]
[trigger_body]
Förklaring av syntax
- Skapa trigger [trigger_name]: Skapar eller ersätter en befintlig trigger med trigger_name.
- [före | after]: Detta anger när triggern kommer att exekveras.
- infoga : Detta anger DML-operationen.
- På [tabellnamn]: Detta anger namnet på tabellen som är kopplad till utlösaren.
- [för varje rad]: Detta anger en utlösare på radnivå, dvs. utlösaren kommer att exekveras för varje påverkad rad.
- [trigger_body]: Detta tillhandahåller operationen som ska utföras när utlösaren aktiveras
Varför använder vi triggers?
När vi behöver utföra vissa åtgärder automatiskt i vissa önskvärda scenarier, kommer triggers att vara användbara. Till exempel måste vi vara medvetna om frekvensen och tidpunkten för ändringar i en tabell som ständigt förändras. I sådana fall kan vi skapa en utlösare för att infoga nödvändiga data i en annan tabell om den primära tabellen genomgick några ändringar.
Olika triggertyper i SQL Server
Det finns två kategorier av triggers:
- DDL-utlösare
- DML-utlösare
- Inloggningsutlösare
DDL-utlösare
Kommandohändelserna Data Definition Language (DDL) som Create_table, Create_view, drop_table, Drop_view och Alter_table gör att DDL-triggarna aktiveras.
SQL Server
create trigger safety on database for create_table,alter_table,drop_table as print 'you can not create,drop and alter tab>
Produktion:
DML-utlösare
Data använder DML-kommandohändelser (manipulation Language) som börjar med Infoga, Uppdatera och Ta bort sätter igång DML-triggarna. motsvarande insert_table, update_view och delete_table.
SQL Server
create trigger deep on emp for insert,update ,delete as print 'you can not insert,update and delete this table i' rollback;>
Produktion:
Inloggningsutlösare
inloggningsutlösare är bränder som svar på en LOGON-händelse. När en användarsession skapas med en SQL Server-instans efter att autentiseringsprocessen för loggning är klar men innan en användarsession upprättas, äger LOGON-händelsen rum. Som ett resultat kommer PRINT-satsmeddelandena och eventuella fel som genereras av utlösaren alla att vara synliga i SQL Server-felloggen. Autentiseringsfel förhindrar att inloggningsutlösare används. Dessa utlösare kan användas för att spåra inloggningsaktivitet eller sätta en gräns för antalet sessioner som en given inloggning kan ha för att granska och hantera serversessioner.
Hur visar SQL Server trigger?
Show- eller listtriggern är användbar när vi har många databaser med många tabeller. Den här frågan är mycket användbar när tabellnamnen är desamma i flera databaser. Vi kan se en lista över alla utlösare som finns tillgängliga i SQL Server genom att använda kommandot nedan:
Syntax:
FRÅN sys.triggers, VÄLJ namn, is_instead_of_trigger
IF-typ = 'TR';
SQL Server Management Studio gör det mycket enkelt att visa eller lista alla triggers som är tillgängliga för en given tabell. Följande steg hjälper oss att uppnå detta:
Gå till Databaser menyn, välj önskad databas och expandera den sedan.
- Välj Tabeller menyn och utöka den.
- Välj en specifik tabell och expandera den.
Vi kommer att få olika alternativ här. När vi väljer Utlösare alternativet visar det alla triggers som finns i den här tabellen.
FÖRE och EFTER Trigger
BEFORE triggers kör trigger-åtgärden innan trigger-satsen körs. EFTER triggers kör trigger-åtgärden efter att trigging-satsen har körts.
Exempel
Given studentrapportdatabas, i vilken studentbetygsbedömning registreras. Skapa en utlösare i ett sådant schema så att summan och procentandelen av angivna markeringar automatiskt infogas när en post infogas.
Här kommer en utlösare att anropa innan posten infogas så BEFORE Tag kan användas.
Antag att databasschemat
Fråga
mysql>>desc Student;>
SQL Trigger till problemformuleringen.
Ovanstående SQL-sats kommer att skapa en utlösare i elevdatabasen där varje gång ämnen skrivs in, innan denna data infogas i databasen, kommer utlösaren att beräkna dessa två värden och infoga dem med de angivna värdena. dvs.
Produktion
På så sätt kan triggers skapas och exekveras i databaserna.
Fördelen med triggers
Fördelarna med att använda triggers i SQL Server inkluderar följande:
- Databasobjektregler upprättas av utlösare, som gör att ändringar ångras om de inte uppfylls.
- Utlösaren kommer att undersöka data och vid behov göra ändringar.
- Vi kan upprätthålla dataintegritet tack vare triggers.
- Data valideras med hjälp av triggers innan de infogas eller uppdateras.
- Triggers hjälper oss att upprätthålla en registerlogg.
- På grund av det faktum att de inte behöver kompileras varje gång de körs, förbättrar triggers prestanda för SQL-frågor.
- Koden på klientsidan reduceras av triggers, vilket sparar tid och arbete.
- Triggerunderhåll är enkelt.
Nackdel av triggers
Nackdelarna med att använda triggers i SQL Server inkluderar följande:
- Endast utlösare tillåter användning av utökade valideringar.
- Automatiska triggers används och användaren är omedveten om när de exekveras. Följaktligen är det svårt att felsöka problem som uppstår i databaslagret.
- Databasserverns overhead kan öka som ett resultat av triggers.
- I en enda CREATE TRIGGER-sats kan vi ange samma triggeråtgärd för flera användaråtgärder, som INSERT och UPDATE.
- Endast den aktuella databasen är tillgänglig för att skapa utlösare, men de kan fortfarande göra referenser till objekt utanför databasen.
Vanliga frågor
F1: Vad är en SQL-utlösare?
Svar:
En SQL-utlösare är ett databasobjekt som är associerat med en tabell och som automatiskt kör en uppsättning SQL-satser när en specifik händelse inträffar i den tabellen. Triggers används för att upprätthålla affärsregler, upprätthålla dataintegritet och automatisera vissa åtgärder i en databas. De kan utlösas av olika händelser, som att infoga, uppdatera eller ta bort data i en tabell, och de låter dig utföra ytterligare operationer baserat på dessa händelser.
F2: Hur fungerar SQL-triggers?
Svar:
SQL-utlösare definieras med SQL-satser och är associerade med en specifik tabell. När den definierade triggerhändelsen (t.ex. INSERT, UPDATE, DELETE) inträffar i den tabellen, exekveras den associerade triggerkoden automatiskt. Triggerkoden kan bestå av SQL-satser som kan manipulera data i samma eller andra tabeller, genomdriva begränsningar eller utföra andra åtgärder. Triggers exekveras inom transaktionsomfånget och de kan definieras för att utföras antingen före eller efter den utlösande händelsen.
rom
F3: Vilka är fördelarna med att använda SQL-utlösare?
Svar:
Fördelarna med att använda SQL-utlösare inkluderar:
Dataintegritet: Utlösare låter dig tillämpa komplexa affärsregler och begränsningar på databasnivå, vilket säkerställer att data förblir konsekventa och korrekta.
Automatisering: Utlösare kan automatisera repetitiva eller komplexa uppgifter genom att utföra fördefinierade åtgärder närhelst en specificerad händelse inträffar. Detta minskar behovet av manuella ingrepp och förbättrar effektiviteten.
Granskningsspår: Utlösare kan användas för att spåra ändringar som gjorts i data, till exempel loggningsändringar i en separat granskningstabell. Detta hjälper till att granska och underhålla en historik över dataändringar.
Datavalidering: Utlösare kan utföra ytterligare valideringskontroller av data innan de infogas, uppdateras eller raderas, vilket säkerställer att endast giltiga och överensstämmande data lagras i databasen.