logo

SQL Trigger | Studenterdatabase

En trigger er en lagret procedure i en database, der automatisk kalder på, når en særlig hændelse i databasen opstår. For eksempel kan en trigger aktiveres, når en række indsættes i en specificeret tabel, eller når specifikke tabelkolonner opdateres. Med enkle ord er en trigger en samling af SQL sætninger med bestemte navne, der er gemt i systemhukommelsen. Det tilhører en specifik klasse af lagrede procedurer, der automatisk påkaldes som svar på databaseserverhændelser. Hver trigger har et bord knyttet til sig.

Fordi en trigger ikke kan kaldes direkte, i modsætning til en lagret procedure, omtales den som en speciel procedure. En trigger kaldes automatisk, når en datamodifikationsbegivenhed mod en tabel finder sted, hvilket er den vigtigste skelnen mellem en trigger og en procedure. På den anden side skal en lagret procedure kaldes direkte.



Følgende er de vigtigste forskelle mellem triggere og lagrede procedurer:

  1. Triggere kan ikke aktiveres eller udføres manuelt.
  2. Der er ingen chance for, at triggere modtager parametre.
  3. En transaktion kan ikke forpligtes eller rulles tilbage i en trigger.

Syntaks:

opret trigger [trigger_name]



[før | efter]

indsætte

udvælgelsessortering

på [table_name]



[for hver række]

[trigger_body]

Forklaring af syntaks

  1. Opret trigger [trigger_name]: Opretter eller erstatter en eksisterende trigger med trigger_name.
  2. [før | efter]: Dette angiver, hvornår triggeren vil blive udført.
  3. indsæt : Dette specificerer DML-handlingen.
  4. På [tabel_navn]: Dette angiver navnet på den tabel, der er knyttet til triggeren.
  5. [for hver række]: Dette angiver en udløser på rækkeniveau, dvs. udløseren vil blive udført for hver berørt række.
  6. [trigger_body]: Dette giver den operation, der skal udføres, når triggeren udløses

Hvorfor bruger vi triggere?

Når vi skal udføre nogle handlinger automatisk i visse ønskværdige scenarier, vil triggere være nyttige. For eksempel skal vi være opmærksomme på hyppigheden og timingen af ​​ændringer i en tabel, der konstant ændrer sig. I sådanne tilfælde kunne vi oprette en trigger for at indsætte de nødvendige data i en anden tabel, hvis den primære tabel undergik nogen ændringer.

Forskellige triggertyper i SQL Server

Der findes to kategorier af triggere:

  1. DDL trigger
  2. DML trigger
  3. Logon udløsere

DDL-udløsere

Data Definition Language (DDL)-kommandohændelser såsom Create_table, Create_view, drop_table, Drop_view og Alter_table får DDL-triggerne til at blive aktiveret.

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-udløsere

Dataene bruger DML-kommandohændelser (manipulation Language), der begynder med Indsæt, Opdater og Slet, og aktiverer DML-udløserne. svarende til 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;>

Produktion:

Logon udløsere

logon-triggere er brande som reaktion på en LOGON-hændelse. Når en brugersession oprettes med en SQL Server-instans, efter at godkendelsesprocessen for logning er afsluttet, men før oprettelse af en brugersession, finder LOGON-hændelsen sted. Som et resultat heraf vil PRINT-sætningsmeddelelserne og eventuelle fejl genereret af triggeren alle være synlige i SQL Server-fejlloggen. Godkendelsesfejl forhindrer logon-triggere i at blive brugt. Disse triggere kan bruges til at spore login-aktivitet eller sætte en grænse for antallet af sessioner, som et givet login kan have for at revidere og administrere serversessioner.

Hvordan viser SQL Server Trigger?

Vis- eller listeudløseren er nyttig, når vi har mange databaser med mange tabeller. Denne forespørgsel er meget nyttig, når tabelnavnene er de samme på tværs af flere databaser. Vi kan se en liste over hver trigger, der er tilgængelig i SQL Serveren ved at bruge kommandoen nedenfor:

navn by i usa

Syntaks:

FRA sys.triggers, VÆLG navn, er_i stedet for_trigger
IF type = 'TR';

SQL Server Management Studio gør det meget enkelt at vise eller liste alle triggere, der er tilgængelige for en given tabel. Følgende trin hjælper os med at opnå dette:

Gå til Databaser menuen, vælg den ønskede database, og udvid den derefter.

  • Vælg Tabeller menuen og udvide den.
  • Vælg en specifik tabel og udvid den.

Vi får forskellige muligheder her. Når vi vælger Udløsere mulighed, viser den alle de tilgængelige triggere i denne tabel.

FØR og EFTER Trigger

FØR triggere køres triggerhandlingen, før den udløsende sætning køres. EFTER triggere kører triggerhandlingen, efter at den udløsende sætning er kørt.

Eksempel
Givet Student Report Database, hvor elevkaraktervurderinger registreres. I et sådant skema skal du oprette en trigger, så totalen og procentdelen af ​​angivne mærker automatisk indsættes, hver gang en post indsættes.

755 chmod

Her vil en trigger aktivere før posten indsættes, så FØR Tag kan bruges.

Antag, at databaseskemaet

Forespørgsel

mysql>>desc Student;>

SQL Trigger til problemformuleringen.

img2

Ovenstående SQL-sætning vil oprette en trigger i elevdatabasen, hvor hver gang der indtastes emnemærker, før disse data indsættes i databasen, vil triggeren beregne disse to værdier og indsætte dem med de indtastede værdier. dvs.

Produktion

img3

På denne måde kan triggere oprettes og udføres i databaserne.

pawandeep rajan

Fordel ved triggere

Fordelene ved at bruge triggere i SQL Server inkluderer følgende:

  1. Databaseobjektregler etableres af triggere, som gør, at ændringer fortrydes, hvis de ikke overholdes.
  2. Udløseren vil undersøge dataene og om nødvendigt foretage ændringer.
  3. Vi kan håndhæve dataintegritet takket være triggere.
  4. Data valideres ved hjælp af triggere, før de indsættes eller opdateres.
  5. Triggere hjælper os med at vedligeholde en log.
  6. På grund af det faktum, at de ikke behøver at blive kompileret hver gang de køres, forbedrer triggers ydeevnen af ​​SQL-forespørgsler.
  7. Koden på klientsiden reduceres af triggere, hvilket sparer tid og arbejdskraft.
  8. Vedligeholdelse af trigger er enkel.

Ulempe af udløsere

Ulemperne ved at bruge triggere i SQL Server omfatter følgende:

  1. Kun triggere tillader brug af udvidede valideringer.
  2. Der bruges automatiske triggere, og brugeren er ikke klar over, hvornår de udføres. Det er derfor svært at fejlfinde problemer, der opstår i databaselaget.
  3. Databaseserverens overhead kan stige som følge af triggere.
  4. I en enkelt CREATE TRIGGER-sætning kan vi angive den samme triggerhandling for flere brugerhandlinger, såsom INSERT og UPDATE.
  5. Kun den aktuelle database er tilgængelig til at oprette triggere, men de kan stadig lave referencer til objekter uden for databasen.

Ofte stillede spørgsmål

Q1: Hvad er en SQL-trigger?

Svar:

En SQL-trigger er et databaseobjekt, der er knyttet til en tabel og automatisk udfører et sæt SQL-sætninger, når en specifik hændelse opstår i den tabel. Triggere bruges til at håndhæve forretningsregler, opretholde dataintegritet og automatisere visse handlinger i en database. De kan udløses af forskellige hændelser, såsom indsættelse, opdatering eller sletning af data i en tabel, og de giver dig mulighed for at udføre yderligere handlinger baseret på disse hændelser.

Q2: Hvordan fungerer SQL-triggere?

Svar:

SQL-udløsere er defineret ved hjælp af SQL-sætninger og er knyttet til en specifik tabel. Når den definerede triggerhændelse (f.eks. INSERT, UPDATE, DELETE) forekommer på den tabel, udføres den tilhørende triggerkode automatisk. Triggerkoden kan bestå af SQL-sætninger, der kan manipulere data i samme eller andre tabeller, håndhæve begrænsninger eller udføre andre handlinger. Triggere udføres inden for transaktionsomfanget, og de kan defineres til at udføres enten før eller efter den udløsende hændelse.

Q3: Hvad er fordelene ved at bruge SQL-triggere?

Svar:

Fordelene ved at bruge SQL-triggere omfatter:

Dataintegritet: Triggere giver dig mulighed for at håndhæve komplekse forretningsregler og begrænsninger på databaseniveau, hvilket sikrer, at data forbliver konsistente og nøjagtige.

Automatisering: Triggere kan automatisere gentagne eller komplekse opgaver ved at udføre foruddefinerede handlinger, når en bestemt hændelse indtræffer. Dette reducerer behovet for manuel indgriben og forbedrer effektiviteten.

Revisionsspor: Triggere kan bruges til at spore ændringer, der er foretaget i data, såsom logning af ændringer i en separat revisionstabel. Dette hjælper med at revidere og vedligeholde en historik over dataændringer.

Datavalidering: Triggere kan udføre yderligere valideringstjek på data, før de indsættes, opdateres eller slettes, for at sikre, at kun gyldige og overensstemmende data gemmes i databasen.