Eksempler: Å lage triggere med MS SQL Server

Eksemplene bruker styrkeløftdatabasen min som utgangspunkt.
På den måten kan dere selv legge inn data og teste hvis dere ønsker det.

I)

Denne triggeren skriver ut en melding hver gang brukere prøver å kjøre INSERT eller UPDATE på tabellen klubb.

CREATE TRIGGER TestInstead ON klubb
INSTEAD OF Insert, Update
AS
  PRINT 'Ingen får lov til å legge inn klubb-data'
GO
  
Test:
INSERT INTO klubb
VALUES(12, 'Ytre Indrehaug SIL', 'Yitv. 2', 5096, 'Espen Nihlsen', '93 124567')
  
Resultat:
Ingen får lov til å legge inn klubb-data

(1 row(s) affected)
  

Selv om det står (1 row(s) affected), er ingen data lagt inn i databasen. Dette skyldes stikkordet INSTEAD OF, som sørger for at det triggeren gjør, gjøres istedenfor INSERT som brukeren prøver å gjøre.

II)

Denne triggeren sjekker at ikke en dommer kan være både hoveddommer og sidedommer i en øvelse.
Stopper innlegging av data og skriver ut feilmelding hvis brukeren taster feil.

CREATE TRIGGER TestAfter ON stevnedommer
AFTER Insert, Update
AS
  PRINT 'Sjekker stevnedommere ...'

  IF (UPDATE(hoveddommer) OR UPDATE(sidedommer1) OR UPDATE(sidedommer2)) 
  BEGIN
    DECLARE @dommer1 tinyint,
            @dommer2 tinyint,
            @dommer3 tinyint

    SELECT @dommer1 = hoveddommer,
           @dommer2 = sidedommer1,
           @dommer3 = sidedommer2
    FROM stevnedommer

    IF @dommer1 = @dommer2 OR
       @dommer1 = @dommer3 OR
       @dommer2 = @dommer3
    BEGIN
      PRINT ('Feil: Kan ikke være både hoveddommer og sidedommer samtidig')
      ROLLBACK TRANSACTION
    END
  END
GO
  

legger inn et stevne å teste på også, for alle stevner har fullt opp med dommere:

insert into Stevne
values(5, 'Klubbmesterskap i benkpress', '1. mars 2003', 8, 'Grieghallen');
  
Test:
insert into Stevnedommer
values(5, 2, 1, 4, 1);
  
Resultat:
Sjekker stevnedommere ...
Feil: Kan ikke være både hoveddommer og sidedommer samtidig
  

Elin K. Ajer Andreassen, 2003