Wat zijn transactions?
M.b.v. transactions kun je 1 of meerdere queries uitvoeren, zonder dat de wijzigingen zichtbaar zijn voor andere processen. Mocht er tijdens dit proces een query mislukken zal de transactie falen en worden er geen wijzigingen aangebracht. Als er niet aan een bepaalde voorwaarde wordt voldaan kun je een zgn. ROLLBACK uitvoeren waarmee alle uitgevoerde queries ongedaan worden gemaakt. Als alle queries goed zijn uitgevoerd kun je een COMMIT uitvoeren waarmee alle queries definitief zijn gemaakt.
Het klassieke voorbeeld is die van de bank:
Stel dat ik 100EUR wil overmaken van mijn rekening naar die van jou; je zou dan het volgende kunnen uitvoeren in SQL:
UPDATE rekening SET saldo=saldo-100 WHERE naam=’Remco’
UPDATE rekening SET saldo=saldo+100 WHERE naam=’Jouw naam’
Maar.....stel nu dat er tussen die 2 queries iets misgaat, waardoor de 2e query niet wordt uitgevoerd, ik ben dan 100EUR lichter, maar jij hebt je geld niet. Het geld is dus verdwenen.
Met transactions zou het zo gebeuren:
## Start de transactie
START TRANSACTION;
UPDATE rekening SET saldo=saldo-100 WHERE naam=’Remco’;
UPDATE rekening SET saldo=saldo+100 WHERE naam=’Jouw naam’;
## Als we hier komen zijn beide queries uitgevoerd
## Maak de wijzigingen permanent
COMMIT;
De query “START TRANSACTION” geeft aan dat er een transactie begint. Vervolgens worden er 2 queries uitgevoerd en volgt uiteindelijk de “COMMIT”, als er tussendoor iets fout gaat zal de COMMIT niet worden uitgevoerd, de queries zullen dus niet worden verwerkt. Uiteraard is dit geheel afhankelijk van hoe je script in elkaar steekt.
Je zou het ook nog uit kunnen breiden door te controleren of mijn saldo wel voldoende is, in “echte” databases kun je dit netjes in een database-functie oplossen, met MySQL moet je wat client-side werk verrichten. Afhankelijk van het saldo kun je een ROLLBACK uitvoeren om de boel te annuleren.
Inhoudsopgave
- Inleiding
- Wat zijn transactions?
- Wat zijn PK / FK-relaties
- Het leuke werk, integriteit behouden
- Een stukje voorbeeldcode
- Tips & Tricks