💡Programmierung - Aufgaben (optional)

Diese Aufgaben basieren auf der Datenbank, die für die Aufgaben zu Transaktionen aufgebaut wurde.

Basis: Datenbank "Kontoverwaltung" aus Transaktionen - Aufgaben

Erstelle eine Prozedur für Sofort-Buchungen (PROCEDURE & TRANSACTION)

  1. Erstelle eine Prozedur Account_Transfer, welche als Parameter 2 Kontonummern (@FromAccount, @ToAccount), den Betrag, die Währung und eine Bemerkung akzeptiert. In einer Transaktion sollen 2 INSERTs und 2 UPDATEs ausgeführt werden: Je Konto ein INTERT auf die Tabelle Posting und ein UPDATE auf die Tabelle Account.

  2. Teste die Prozedur mit EXEC Account_Transfer <Argumente...>. und prüfe die Einträge in der Tabelle Posting und Kontostände in Account vor und nachher.

Kontostände bei Buchungen automatisch aktualisieren (TRIGGER)

  1. Erstelle einen TRIGGER Tr_Posting_Insert für jedes INSERT in die Tabelle Posting, welcher automatisch den neuen Kontostand für das Konto aus INSERT berechnet und aktualisiert. Die obigen UPDATE-Befehle werden also in den TRIGGER verschoben und in der Transaktion werden nur noch die zwei INSERTs (Buchungs-Datensätze) ausgeführt.

  2. Teste wieder mit EXEC Account_Transfer 1, 2, 10, 'CHF', 'Otto bezahlt für Noras Zeug';

Konto-Überziehung verhindern (FUNCTION & TRIGGER)

  1. Erstelle eine Funktion Is_Posting_Allowed, welche als Argument eine Konto-ID und einen Betrag akzeptiert, wenn der Betrag < 0 ist prüft, ob der Kontostand das her gibt (max. 500.- darf man überziehen) und wenn ja true zurück gibt, sonst false.

  2. Erstelle einen neuen TRIGGER, der mit einem IF die Funktion Is_Posting_Allowed nutzt und entsprechend die UPDATEs der Konten ausführt ODER ein ROLLBACK der ganzen Transaktion durchführt. Hier ist ein Beispiel, welches dich unterstützen kann. Statt IF EXISTS (...) erfolgt dann dein Funktionsaufruf.

  3. Teste nun wieder und vergleiche vor und nachher die Kontostände und die Tabelle Posting.

  4. Optional kannst du im TRIGGER noch eine Fehlermeldung ausgeben und / oder einen Log-Eintrag machen.

Ermögliche Buchungsaufträge mit Ausführungsdatum (PROCEDURE)

  1. Erweitere die Prozedur mit einem Buchungsdatum. Die erstellten Buchungsdatensätze sollen nun das künftige Datum und dem Status "Pending" erhalten.

  2. Erstelle eine neue Prozedur Process_Pending_Postings (ohne Argumente), welche alle Buchungen mit Status "Pending" prüft, ob das Buchungsdatum >= dem aktuelle Datum ist und für diese Buchungen den Kontostand anpasst und den Status auf "OK" setzt.

  3. Teste die neue Prozedur ebenfalls mit EXEC Process_Pending_Postings.

Last updated

Was this helpful?