Basis van databases

In de tabel Rekening wordt een transactie gestart, en worden een UPDATE die 300 aftrekt van het saldo van rekening A en een UPDATE die 300 bij het saldo van rekening B optelt uitgevoerd. Daarna wordt in plaats van COMMIT een ROLLBACK uitgevoerd. Wat gebeurt er met de tabel Rekening?

  1. AAlleen de optelling bij rekening B wordt ongedaan gemaakt; de aftrekking van rekening A blijft bestaan
  2. BBeide UPDATE's worden ongedaan gemaakt, en de tabel keert terug naar de toestand van vóór het begin van de transactie
  3. COmdat de UPDATE's al zijn uitgevoerd, wordt geen van beide ongedaan gemaakt
Antwoord en toelichting tonen

Antwoord: B. Beide UPDATE's worden ongedaan gemaakt, en de tabel keert terug naar de toestand van vóór het begin van de transactie

Een transactie is een mechanisme dat een reeks bewerkingen op een database als één eenheid behandelt. Wijzigingen binnen een transactie worden definitief wanneer COMMIT wordt uitgevoerd, en worden allemaal ongedaan gemaakt wanneer ROLLBACK wordt uitgevoerd, waarbij de gegevens terugkeren naar de toestand van vóór het begin van de transactie. In dit voorbeeld worden zowel de aftrekking van rekening A als de optelling bij rekening B ongedaan gemaakt, en blijven beide saldi ongewijzigd. Als er halverwege een overboeking een fout optreedt, zorgt een rollback ervoor dat er geen halve toestand achterblijft waarin maar één rekening is bijgewerkt. Om slechts een deel van het werk ongedaan te maken, kan met SAVEPOINT een punt worden gemarkeerd en met ROLLBACK TO SAVEPOINT naar dat punt worden teruggekeerd.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van databases

  1. Welke van de ACID-eigenschappen die een transactie moet hebben, is de eigenschap dat een overboeking die rekening A debiteert en rekening B crediteert ofwel volledig ofwel helemaal niet wordt uitgevoerd, ook als er halverwege een storing optreedt?
  2. De voorraad van een product in de tabel Voorraad is 10. Transactie T1 leest de voorraad en schrijft de waarde min 3 terug, en T2 leest de voorraad en schrijft de waarde min 5 terug. Als ze zonder locks worden uitgevoerd in de volgorde T1 leest, T2 leest, T1 schrijft, T2 schrijft, wat is dan de uiteindelijke voorraad?
  3. Welke beschrijving van een dirty read, een van de problemen die optreden als transacties gelijktijdig lopen, is juist?
  4. Transactie T1 voerde SELECT COUNT(*) FROM Bestelling WHERE Bedrag >= 1000 uit en kreeg 8. Direct daarna voegde T2 met INSERT een rij toe voor een bestelling met een bedrag van 2000 en voerde een commit uit. Toen T1 hetzelfde SELECT-statement opnieuw uitvoerde, kreeg het 9. Welk verschijnsel is dit?
  5. Welk antwoord noemt van de isolatieniveaus die de SQL-standaard definieert juist de verschijnselen die bij READ COMMITTED kunnen optreden?