Subato

Resource Files

SQL-Trigger

  • c1: Ergänzen Sie das Schema um eine Tabelle lagerbestand.
    In dieser soll zu jedem Medienartikel (a_nr) der Lagerbestand (bestand) geführt werden. Setzen Sie die Schlüssel richtig. Bedenken Sie welche Bedingungen für UPDATE und DELETE sinnvoll sind. Der Default-Wert für den Bestand soll immer 3 sein.
  • i1: Fügen Sie alle vorhandenen medienartikel in die Tabelle lagerbestand ein. Der Bestand soll jeweils 3 ein.
  • t1: Schreiben Sie für die Tabelle bestellung-beinhaltet-medienartikel einen Trigger, der dafür sorgt, dass maximal so viele Artikel gekauft werden können, wie im Lager vorrätig sind. Werden mehr Artikel bestellt, so setzen Sie die Anzahl auf den Lagerbestand. Es reicht, dass der Trigger auf insert reagiert. Geben Sie bitte auch die Befehle für den delimiter mit an.
  • t2: Schreiben Sie Trigger (Mehrzahl!!), die die Tabelle lagerbestand aktualisieren, sobald eine Bestellposition hinzugefügt, geändert oder gelöscht wird. 

QUERY c1: -- todo -- Testdaten INSERT INTO medienartikel(a_nr, titel, jahr) VALUES('999', 'Testartikel', 2021); QUERY i1: -- todo -- Testdaten bitte nicht löschen UPDATE medienartikel SET a_nr='999-Test' WHERE a_nr='999'; SELECT * FROM lagerbestand WHERE a_nr LIKE '%Test'; QUERY t1: -- todo -- Testdaten bitte nicht löschen INSERT INTO bestellung (be_nr, p_nr, bestellweg) VALUES ('Test999', 'P019', 'Postweg'); INSERT INTO bestellung_beinhaltet_medienartikel(a_nr, be_nr, anzahl, einzelpreis) VALUES ('0011-T', 'TEST999', 10, 30); SELECT * FROM bestellung_beinhaltet_medienartikel WHERE be_nr='TEST999'; QUERY t2 --todo -- Testdateien bitte nicht löschen INSERT INTO bestellung_beinhaltet_medienartikel(a_nr, be_nr, anzahl, einzelpreis) VALUES ('0012-T', 'TEST999', 2, 30); SELECT bestand FROM lagerbestand WHERE a_nr='0012-T'; UPDATE bestellung_beinhaltet_medienartikel SET anzahl = 1 WHERE a_nr='0012-T'; SELECT bestand FROM lagerbestand WHERE a_nr='0012-T'; DELETE FROM bestellung_beinhaltet_medienartikel WHERE a_nr='0012-T'; SELECT bestand FROM lagerbestand WHERE a_nr='0012-T';
sql
You are not logged in and therefore you cannot submit a solution.