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' GOTest:
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