I denne artikkelen vil vi utforske hvordan vi kan lage og jobbe med triggere i SQL Server.
Det er tre hovedtyper av triggere i SQL Server:
La oss utforske disse triggerne i denne guiden.
SQL Server DML utløser
DML- eller datamanipulasjonsspråkutløsere er type triggere som skyter som svar på et innlegg, oppdatering og sletter operasjonen på en tabell eller visning. DML -triggere vil kjøre når noen gyldig operasjon utføres, enten noen rader er berørt.
Lag DML etter trigger
I SQL Server kan du opprette en DML -trigger ved hjelp av Create Trigger -setningen.
Lag Trigger Schema_name.Trigger_nameLa oss bryte ned syntaksen ovenfor:
For å lære å lage og bruke en DML -trigger, la oss ta et praktisk eksempel.
Opprett eksempeldatabase og sett inn dataene som angitt i settet med spørsmål vist nedenfor:
-- Opprett eksempeldatabaseNår vi har prøvedataene, kan vi fortsette og lage en DML -utløser for å skyte på en oppdateringsoperasjon på tabellen.
Tenk på eksemplet som er vist nedenfor:
-- Lag tabell for å lagre oppdateringshistorikkOvennevnte spørring vil opprette en trigger som skyter når vi utfører en oppdatering på tabellen. For å teste trigger kan vi kjøre en oppdatering som:
-- OppdateringstabellEtter utførelse kan vi sjekke om avtrekkeren fungerte ved å velge kolonnene i ModifiedDate -tabellen.
-- Kontroller ModifiedDate TableI SSM -er kan du se utløserne på et bord ved å utvide alternativet Triggers:
Lag i stedet for triggere
Den andre typen DML -utløsere i SQL Server er i stedet for utløsere. Dette er type triggere som utfører i stedet for DML -setningen. For eksempel, hvis vi spesifiserer en sletterklæring, kan vi bruke i stedet for triggere til å kjøre før operasjonen.
Syntaksen for å lage en i stedet for trigger er som vist:
Lag Trigger Schema_name.Trigger_nameFor eksempel oppretter spørringen nedenfor en trigger som viser en melding når en innsatsoperasjon utføres på tabellen.
-- Lag i stedet for triggerNår vi har kjørt spørringen ovenfor, bør vi få en melding som indikerer at vi ikke kan utføre et innlegg på bordet.
FeilDu kan ikke sette inn i denne tabellen
SQL DDL utløser
DDL- eller datadefinisjonsspråk er triggere som svarer på hendelser på serveren eller databasen i stedet for en tabell. DDL -triggere vil svare på hendelser som Drop, Grant, NEny, Revok, oppdatere statistikk, opprette og endre.
Lag DDL -triggere
Syntaksen for å lage en DDL -trigger er som vist:
Lag Trigger Trigger_nameVi kan bryte ned syntaksen som:
Eksemplet spørring nedenfor Opprett en DDL -trigger som avfyrer når en drop tabellerklæring er utstedt.
-- Lag DDL -triggerNår vi har kjørt en drop -arrangement i databasen, vil utløseren vise hendelsesinformasjon ved hjelp av EventData () -funksjonen.
Vi kan teste utløseren:
-- TestutløserSpørringen skal returnere XML -informasjon om hendelsen som:
I SSMS kan du se utløserne ved å utvide databasen utløser under programmerbarhet i måldatabasen.
Aktiver/deaktiver utløsere
SQL Server lar deg aktivere og deaktivere triggere. For å aktivere en trigger på et bord, bruk spørringen som:
Aktiver Trigger Update_Trigger ved salg;Hvor oppdatering_trigger representerer triggernavn og salg representerer tabellnavnet.
Du kan også aktivere alle triggere på et bord som:
Aktiver utløser alle på tabellnavn;For å aktivere databaseutløser, bruk spørringen:
Aktiver trigger drop_ddl_trigger ved salg;Her representerer drop_ddl_trigger triggernavnet og salget representerer databasen.
For å aktivere alle databaseutløsere, bruk spørringen:
Aktiver utløser alt på salg;For å deaktivere en tabell eller en databaseutløser, må du bytte ut nøkkelordet med deaktiver ☺.
Slett trigger
For å fjerne en trigger, kan du bruke drop -setningen som vist:
Slipp trigger hvis eksisterer triggernavn;SQL Server viser alle utløsere
For å se alle utløserne i en SQL Server -forekomst, bruk spørringen som vist:
Velg navn, type_desc, is_disabled, is_instead_of_trigger fra sys.utløser hvor type = 'tr'Spørringen skal returnere alle utløserne i SQL Server -forekomsten som:
SQL Server -påloggingsutløsere
Inntredelsesutløsere er type triggere som kjøres når en påloggingsaktivitet oppstår på serveren. Disse typer triggere kjøres etter vellykket autentisering, men før du oppretter en brukerøkt. Siden de brukes til å håndtere påloggingsaktivitet, oppretter vi dem på servernivå, som vist i eksemplet nedenfor:
FORSIKTIGHET: Utløseren nedenfor kan forhindre fremtidige pålogginger på serveren. Sørg for å slette før innlogging.
FORSIKTIGHET - ☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️.
-- Lag påloggingsutløserUtløseren vil vise en melding når brukeren logger inn på serveren.
Konklusjon
I denne guiden forsto du forskjellige typer triggere, hvordan du oppretter, aktiverer, deaktiverer, sletter og ser utløsere i SQL Server.