Tutorial på SQL Triggers og lagrede prosedyrer

Tutorial på SQL Triggers og lagrede prosedyrer


Lagrede prosedyrer og utløsere i en database er lignende konstruksjoner. De kan både utføre de samme SQL-setninger. Den største forskjellen mellom de to er hvordan de er utført. En lagret prosedyre må utføres av en bruker, mens en trigger er utført av systemet som følge av en hendelse. Hendelser som forårsaker triggere som skal aktiveres inkludere data innstikk, oppdateringer og sletter. En ulempe med å bruke triggere i stedet for lagrede prosedyrer er at de ikke kan akseptere parametre.

Bruksanvisning

lagrede prosedyrer

1 Bruk oppstillingen nedenfor til å lage en enkel lagret prosedyre uten parametere.

CREATE PROSEDYRE mySproc
SOM
BEGYNNE

-- SQL Statements

SLUTT

2 Lag en lagret prosedyre med parametere ved å kopiere koden under. Å passere en parameter med en standardverdi, inkluderer et likhetstegn og ønsket verdi.

CREATE PROSEDYRE mySproc
{

@Param1 varchar(50),
@Param2 datetime = NULL,
@Param3 int = 0

}
SOM
BEGYNNE

-- SQL Statements

SLUTT

3 Oppdater eller endre en lagret prosedyre ved hjelp av \ "Alter \" kommandoen fra eksempelet nedenfor.

ALTER PROCEDURE mySproc
SOM
BEGYNNE

-- SQL Statements

SLUTT

4 Fjern en lagret prosedyre fra databasen med \ "Drop \" kommandoen, som vist nedenfor.

DROP PROSEDYRE mySproc;

5 Execute lagret prosedyre innenfor SQL ved å kjøre kommandoene nedenfor. Hvis du tar med parametere, sette dem i den rekkefølgen som er forventet av den lagrede prosedyren. Eventuelle strenger vedtatt i skal være i enkle anførselstegn.

Eksempel uten parametere:
EXEC dbo.mySproc

Eksempel med parametre:
EXEC dbo.mySproc 'streng data "," 1/1/1900 ", 1;

Triggers

6 Legg en grunnleggende trigger ved å kopiere koden under.

CREATE TRIGGER myTrigger
PÅ MyTable
ETTER SETT
SOM
BEGYNNE

-- SQL Statements

SLUTT

7 Lag en trigger som vil løpe etter flere hendelser med kommandoene nedenfor.

CREATE TRIGGER myTrigger
PÅ MyTable
ETTER INSERT, UPDATE, DELETE
SOM
BEGYNNE

-- SQL Statements

SLUTT

8 Endre trigger bruker \ "Alter \" kommandoen.

ALTER TRIGGER myTrigger
PÅ MyTable
ETTER SETT
SOM
BEGYNNE

-- SQL Statements

SLUTT

9 Utfør uttalelser fra en trigger i stedet for kommandoene som forårsaker hendelsen ved hjelp av \ "i stedet for \" kommandoen. For eksempel, hvis mySproc oppdatert bordet MyTable, ville det føre til en UPDATE hendelse. Hvis du hadde en trigger satt opp for å fange den hendelsen som inkluderte en \ "i stedet for \" kommandoen, koden fra avtrekkeren ville kjøre, og koden fra den lagrede prosedyren ville aldri kjøre.

CREATE TRIGGER myTrigger
PÅ MyTable
I STEDET FOR UPDATE
SOM
BEGYNNE

-- SQL Statements

SLUTT

10 Fjern trigger fra databasen med \ "Drop \" kommandoen, som vist nedenfor.

DROP TRIGGER myTrigger;

Hint

  • Hvis du trenger for å lage triggere som er betinget, kan du kjøre en på oppdatering hendelsen og bruke update-kommandoen for å avgjøre om en bestemt kolonne har endret seg.
  • HVIS IKKE OPPDATERE (myColumn)
  • KOMME TILBAKE