prev up next


Aufgabe 6.5 (25 Punkte)

Wenn ein Student die Teilnahme an einem Praktikum in die Datenbank eingetragen wird, soll auch ein Tupel in die Tabelle Zugangsberechtigung eingetragen werden, damit der Student, sofern noch nicht vorhanden, auch eine Freischaltung für seine Zugangskarte zu den entsprechenden Praktikumsräumen erhält.

  1. Implementieren Sie eine stored procedure, die die notwendigen Tupel in die jeweiligen Tabellen einträgt. Welche Parameter erhält die stored procedure beim Aufruf?

  2. Erstellen Sie außerdem einen Trigger, der die gleiche Aufgabe automatisch löst, wenn ein Student in ein Praktikum eingetragen wird.

Musterlösung vom 08.06.2008:

1.

create procedure ZugBer (x int, y int)
BEGIN
insert ignore into Teilnahme values (x, y);
insert ignore into Zugangsberechtigung (MatrNr, RaumNr) 
values (x , (select b.RaumNr from Praktika p, Professoren r, Belegung b
                                     where y = p.PraktNr
                                     and p.betreutvon = r.PersNr
                                     and b.PersNr = r.Persnr));
END

2.

create trigger Zugangsber after insert on Teilnahme 
for each row
insert ignore into Zugangsberechtigung (MatrNr, RaumNr)
values (new.MatrNr , (select b.RaumNr from Praktika p, Professoren r, Belegung b
                                     where new.PraktNr = p.PraktNr
                                     and p.betreutvon = r.PersNr
                                     and b.PersNr = r.Persnr))


prev up next