Appearance
Transactions Opgaver
01, Wallet Transfer
Formål: Øve BEGIN/COMMIT/ROLLBACK, validering før commit.
Setup: Opret en tabel til “pengepunge” (fx pr. student). Indsæt testdata med forskellige saldi.
Krav
- Overfør X beløb fra A til B i én transaktion.
- Hvis saldo på A < X: rollback kun til savepoint og afbryd; ellers commit hele transaktionen.
- Log en tekstbesked i en separat “transfer_log”-tabel med status OK eller INSUFFICIENT_FUNDS inden commit/rollback.
02, Batch-tilmeldinger som stored procedure
Formål: Transaktion inde i en stored procedure + constraint-fejl som rollback-trigger.
Krav
- Skriv en stored procedure enroll_many_on_course(course_id, ...) der forsøger at tilmelde flere studerende til samme kursus i én transaktion.
- Regler:
- Hvis en eneste tilmelding vil bryde en constraint (fx dublet i Enrollments eller student findes ikke), skal hele transaktionen rulles tilbage.
- Ved succes: commit og returnér antal tilmeldte.
- Ved fejl: rollback og returnér’ en klar fejlbesked.
- Hint: I SQL Server brug TRY…CATCH med ROLLBACK; i PostgreSQL EXCEPTION-blok i plpgsql; i MySQL brug handler.
03, Pizzageddon
- Lav ...
- et view til menukort
- et andet view efter eget valg
- en stored procedure til at oprette ordrer (med transactions)
- en funktion til at beregne total pris inkl. moms for en pizza
- et subquery der henter en pizza med bund, toppings og pris
- gør det samme med joins