En trigger er en lagret prosedyre i en database som automatisk starter når en spesiell hendelse i databasen inntreffer. For eksempel kan en utløser aktiveres når en rad settes inn i en spesifisert tabell eller når bestemte tabellkolonner oppdateres. Med enkle ord er en trigger en samling av SQL setninger med bestemte navn som er lagret i systemminnet. Den tilhører en spesifikk klasse med lagrede prosedyrer som automatisk påkalles som svar på databaseserverhendelser. Hver trigger har et bord festet til seg.
Fordi en trigger ikke kan kalles direkte, i motsetning til en lagret prosedyre, blir den referert til som en spesiell prosedyre. En utløser kalles automatisk når en dataendringshendelse mot en tabell finner sted, som er hovedskillet mellom en utløser og en prosedyre. På den annen side må en lagret prosedyre kalles direkte.
Følgende er de viktigste forskjellene mellom utløsere og lagrede prosedyrer:
- Utløsere kan ikke påkalles eller utføres manuelt.
- Det er ingen sjanse for at utløsere vil motta parametere.
- En transaksjon kan ikke utføres eller rulles tilbake i en trigger.
Syntaks:
opprette trigger [trigger_name]
[før | etter]
sett inn
10 til makten 6på [tabellnavn]
[for hver rad]
[trigger_body]
Forklaring av syntaks
- Opprett trigger [trigger_name]: Oppretter eller erstatter en eksisterende trigger med trigger_name.
- [før | etter]: Dette spesifiserer når utløseren vil bli utført.
- insert : Dette spesifiserer DML-operasjonen.
- På [tabellnavn]: Dette spesifiserer navnet på tabellen knyttet til utløseren.
- [for hver rad]: Dette spesifiserer en utløser på radnivå, det vil si at utløseren vil bli utført for hver berørte rad.
- [trigger_body]: Dette gir operasjonen som skal utføres når utløseren utløses
Hvorfor bruker vi triggere?
Når vi trenger å utføre noen handlinger automatisk i visse ønskelige scenarier, vil triggere være nyttige. For eksempel må vi være klar over frekvensen og tidspunktet for endringer i en tabell som er i konstant endring. I slike tilfeller kan vi opprette en utløser for å sette inn de nødvendige dataene i en annen tabell hvis primærtabellen gjennomgikk endringer.
Ulike triggertyper i SQL Server
Det finnes to kategorier av utløsere:
- DDL-utløser
- DML-utløser
- Påloggingsutløsere
DDL-utløsere
Data Definition Language (DDL)-kommandohendelser som Create_table, Create_view, drop_table, Drop_view og Alter_table fører til at DDL-utløserne aktiveres.
SQL Server
create trigger safety on database for create_table,alter_table,drop_table as print 'you can not create,drop and alter tab>
Produksjon:
DML-utløsere
Dataene bruker manipulasjonsspråk (DML)-kommandohendelser som begynner med Insert, Update og Delete setter i gang DML-utløserne. som tilsvarer insert_table, update_view og 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;>
Produksjon:
Påloggingsutløsere
påloggingsutløsere er branner som svar på en LOGON-hendelse. Når en brukerøkt opprettes med en SQL Server-forekomst etter at autentiseringsprosessen for logging er fullført, men før en brukersesjon opprettes, finner LOGON-hendelsen sted. Som et resultat vil PRINT-setningsmeldingene og eventuelle feil generert av utløseren alle være synlige i SQL Server-feilloggen. Autentiseringsfeil forhindrer påloggingsutløsere fra å bli brukt. Disse triggerne kan brukes til å spore påloggingsaktivitet eller sette en grense på antall økter som en gitt pålogging kan ha for å revidere og administrere serverøkter.
Hvordan viser SQL Server Trigger?
Vis- eller listeutløseren er nyttig når vi har mange databaser med mange tabeller. Denne spørringen er veldig nyttig når tabellnavnene er de samme på tvers av flere databaser. Vi kan se en liste over hver trigger som er tilgjengelig i SQL Server ved å bruke kommandoen nedenfor:
navn på by i usa
Syntaks:
FROM sys.triggers, SELECT navn, is_isted_of_trigger
IF type = 'TR';
SQL Server Management Studio gjør det veldig enkelt å vise eller liste alle triggere som er tilgjengelige for en gitt tabell. Følgende trinn vil hjelpe oss med å oppnå dette:
Gå til Databaser menyen, velg ønsket database og utvid den.
- Velg Tabeller menyen og utvide den.
- Velg en spesifikk tabell og utvid den.
Vi vil få ulike alternativer her. Når vi velger Utløsere alternativet, viser det alle triggere som er tilgjengelige i denne tabellen.
FØR og ETTER Trigger
FØR utløsere kjører utløserhandlingen før utløsersetningen kjøres. ETTER utløsere kjører utløserhandlingen etter at utløsersetningen er kjørt.
Eksempel
Gitt Student Report Database, der studentkaraktervurderinger registreres. I et slikt skjema oppretter du en utløser slik at totalen og prosentandelen av spesifiserte merker automatisk settes inn hver gang en post settes inn.
rense npm cache
Her vil en trigger starte før posten settes inn, så FØR Tag kan brukes.
Anta at databaseskjemaet
Spørsmål
mysql>>desc Student;>
SQL Trigger til problemformuleringen.
Ovenfor SQL-setningen vil opprette en utløser i elevdatabasen der hver gang fagkarakterer legges inn, før disse dataene settes inn i databasen, vil utløseren beregne de to verdiene og sette dem inn med de angitte verdiene. dvs.
Produksjon
På denne måten kan triggere opprettes og kjøres i databasene.
pawandeep rajan
Fordelen med triggere
Fordelene med å bruke utløsere i SQL Server inkluderer følgende:
- Databaseobjektregler er etablert av utløsere, som fører til at endringer angres hvis de ikke oppfylles.
- Utløseren vil undersøke dataene og om nødvendig gjøre endringer.
- Vi kan håndheve dataintegritet takket være triggere.
- Data valideres ved hjelp av triggere før de settes inn eller oppdateres.
- Triggere hjelper oss med å opprettholde en logg.
- På grunn av det faktum at de ikke trenger å bli kompilert hver gang de kjøres, forbedrer triggere ytelsen til SQL-spørringer.
- Koden på klientsiden reduseres av triggere, noe som sparer tid og arbeid.
- Utløservedlikehold er enkelt.
Ulempe av utløsere
Ulempene med å bruke utløsere i SQL Server inkluderer følgende:
- Bare triggere tillater bruk av utvidede valideringer.
- Automatiske triggere brukes, og brukeren er uvitende om når de blir utført. Følgelig er det vanskelig å feilsøke problemer som oppstår i databaselaget.
- Databaseserverens overhead kan øke som et resultat av triggere.
- I en enkelt CREATE TRIGGER-setning kan vi spesifisere den samme triggerhandlingen for flere brukerhandlinger, for eksempel INSERT og UPDATE.
- Bare gjeldende database er tilgjengelig for å lage utløsere, men de kan fortsatt gjøre referanser til objekter utenfor databasen.
ofte stilte spørsmål
Q1: Hva er en SQL-utløser?
Svar:
En SQL-utløser er et databaseobjekt som er assosiert med en tabell og kjører automatisk et sett med SQL-setninger når en spesifikk hendelse oppstår på den tabellen. Triggere brukes til å håndheve forretningsregler, opprettholde dataintegritet og automatisere visse handlinger i en database. De kan utløses av ulike hendelser, for eksempel å sette inn, oppdatere eller slette data i en tabell, og de lar deg utføre ytterligere operasjoner basert på disse hendelsene.
Q2: Hvordan fungerer SQL-utløsere?
Svar:
SQL-utløsere er definert ved hjelp av SQL-setninger og er knyttet til en bestemt tabell. Når den definerte triggerhendelsen (f.eks. INSERT, UPDATE, DELETE) oppstår på den tabellen, utføres den tilhørende triggerkoden automatisk. Utløserkoden kan bestå av SQL-setninger som kan manipulere data i samme eller andre tabeller, håndheve begrensninger eller utføre andre handlinger. Utløsere utføres innenfor transaksjonsomfanget, og de kan defineres til å utføres enten før eller etter den utløsende hendelsen.
Spørsmål 3: Hva er fordelene med å bruke SQL-utløsere?
Svar:
Fordelene med å bruke SQL-utløsere inkluderer:
Dataintegritet: Triggere lar deg håndheve komplekse forretningsregler og begrensninger på databasenivå, og sikrer at data forblir konsistente og nøyaktige.
Automatisering: Triggere kan automatisere repeterende eller komplekse oppgaver ved å utføre forhåndsdefinerte handlinger når en spesifisert hendelse inntreffer. Dette reduserer behovet for manuell intervensjon og forbedrer effektiviteten.
Revisjonsspor: Utløsere kan brukes til å spore endringer som er gjort i data, for eksempel logging av endringer i en egen revisjonstabell. Dette hjelper med å revidere og vedlikeholde en historikk med dataendringer.
Datavalidering: Utløsere kan utføre ytterligere valideringskontroller på data før de settes inn, oppdateres eller slettes, og sikrer at bare gyldige og samsvarende data lagres i databasen.