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