💡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)
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 TabellePostingund ein UPDATE auf die TabelleAccount.Teste die Prozedur mit
EXEC Account_Transfer <Argumente...>. und prüfe die Einträge in der TabellePostingund Kontostände inAccountvor und nachher.
Kontostände bei Buchungen automatisch aktualisieren (TRIGGER)
Erstelle einen
TRIGGERTr_Posting_Insertfür jedesINSERTin die TabellePosting, welcher automatisch den neuen Kontostand für das Konto ausINSERTberechnet und aktualisiert. Die obigenUPDATE-Befehle werden also in denTRIGGERverschoben und in der Transaktion werden nur noch die zweiINSERTs (Buchungs-Datensätze) ausgeführt.Teste wieder mit
EXEC Account_Transfer 1, 2, 10, 'CHF', 'Otto bezahlt für Noras Zeug';
Konto-Überziehung verhindern (FUNCTION & TRIGGER)
Erstelle eine Funktion
, 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 jaIs_Posting_Allowedtruezurück gibt, sonstfalse.Erstelle einen neuen TRIGGER, der mit einem
IFdie Funktionnutzt und entsprechend die UPDATEs der Konten ausführt ODER einIs_Posting_AllowedROLLBACKder ganzen Transaktion durchführt. Hier ist ein Beispiel, welches dich unterstützen kann. StattIF EXISTS (...)erfolgt dann dein Funktionsaufruf.Teste nun wieder und vergleiche vor und nachher die Kontostände und die Tabelle
Posting.Optional kannst du im TRIGGER noch eine Fehlermeldung ausgeben und / oder einen Log-Eintrag machen.
Ermögliche Buchungsaufträge mit Ausführungsdatum (PROCEDURE)
Erweitere die Prozedur mit einem Buchungsdatum. Die erstellten Buchungsdatensätze sollen nun das künftige Datum und dem Status "Pending" erhalten.
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.Teste die neue Prozedur ebenfalls mit
EXEC Process_Pending_Postings.
Last updated
Was this helpful?