Skip to content

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