dbsys.info

Kapittel 13: Test deg selv

Hvert spørsmål har nøyaktig 1 korrekt svar.

Du får 3 poeng for hvert riktige svar, -1 poeng for hvert gale svar og 0 poeng for ubesvarte spørsmål.

Noen av spørsmålene refererer til eksemplene nederst på siden.

Ta vare på svarene dine

Hemmelig kallenavn (nick):

Lag nytt kallenavn

 

1. Hva er en trigger ?

2. Til hva kan vi bruke en AFTER rad-trigger ?

3. Hva skjer når spørring 1 blir utført, gitt at trigger 1 er opprettet ?

4. Hva skjer når spørring 2 blir utført, gitt at trigger 2 er opprettet ?

5. Hvor mange ganger blir trigger 2 utført når spørring 3 blir utført ?

6. Til hva kan vi bruke en BEFORE rad-trigger ?

Eksempler

Under finner du spørringer og definisjon av triggere mot en database for romreservasjoner ved et konferansehotell. En reservasjon er knyttet til et rom og en bedrift.

Tabell Rom

Nr Plasser
101 30
102 200
103 150
104 40

Tabell Bedrift

BNr Navn Mobil
1 Telemark Fylkeskommune 22334455
2 Opel Norge 88552277
3 COOP 55337722

Tabell Reservasjon

Id Dato Fra Til Nr BNr
1001 2014-09-22 08:00 15:00 102 2
1002 2014-09-23 10:00 14:00 102 2
1003 2014-09-23 10:00 12:00 103 1
1004 2014-09-23 13:00 15:00 103 3
1005 2014-09-24 09:00 15:00 104 3

Trigger 1


CREATE TRIGGER tr1
  BEFORE INSERT ON Bedrift
  FOR EACH ROW
BEGIN
  SET NEW.Navn = UPPER(NEW.Navn);
END

Trigger 2


CREATE TRIGGER tr2
  BEFORE UPDATE ON Rom
  FOR EACH ROW
BEGIN
  IF NEW.Plasser < 1 THEN
    SIGNAL
	  SQLSTATE '80000'
      SET MESSAGE_TEXT = 'Antall plasser må være større enn 0!';
  END IF;
END

Spørring 1


INSERT INTO Bedrift(BNr, Navn, Mobil)
VALUES (4, 'Ford Norge', '12349876')

Spørring 2


UPDATE Rom
SET Plasser = Plasser - 20
WHERE Nr = 101 OR Nr = 102

Spørring 3


UPDATE Rom
SET Plasser = Plasser + 20