OnderwerpenSpiekbriefjeLessen
Lurndo › Onderwerpen › Transacties met BEGIN, COMMIT en ROLLBACK

SQL leren: Transacties met BEGIN, COMMIT en ROLLBACK

Alles of niets

Een bestelling in de webshop is meer dan één query: een nieuwe bestelling, haar regels, en minder voorraad. "En als de stroom uitvalt halverwege?" vraagt Jens. Dan wil je dat alles gebeurt, of niets.

Een transactie

Een transactie bundelt queries tot één geheel. BEGIN start haar, COMMIT legt alles in één keer vast. Tot de COMMIT ziet niemand anders de wijzigingen, en loopt er onderweg iets mis, dan wordt er niets vastgelegd.

Hier bestelt Pieter zes croissants: een bestelling, een bestelregel en minder voorraad. Onderaan zie je de voorraad na de COMMIT.

BEGIN;
INSERT INTO bestellingen (id, klant_id, besteld_op, afhalen_op) VALUES (21, 5, '2025-12-12', '2025-12-13');
INSERT INTO bestelregels (bestelling_id, product_id, aantal) VALUES (21, 5, 6);
UPDATE producten SET voorraad = voorraad - 6 WHERE id = 5;
COMMIT
Resultaat

Terug met ROLLBACK

Bedenk je je onderweg, dan schrijf je ROLLBACK in plaats van COMMIT. Alles sinds de BEGIN wordt teruggedraaid, alsof het nooit gebeurde.

Hier zet iemand per ongeluk alle prijzen op 0, maar de ROLLBACK redt de dag.

BEGIN;
UPDATE producten SET prijs = 0;
ROLLBACK
Resultaat

Regels die waken

Sommige kolommen hebben een CHECK: een regel waar elke rij aan moet voldoen. In deze bakkerij mag de voorraad nooit onder 0 en kan niemand negatieve spaarpunten hebben.

Breekt een query zo'n regel, dan weigert SQLite die query met een fout. De queries ervoor in dezelfde transactie zijn dan nog niet vastgelegd. Met ROLLBACK gooi je ze netjes weg.

Hieronder de klanten met weinig punten. Daar kan het snel misgaan.

SELECT naam, punten FROM klanten WHERE punten < 60
Resultaat
naampunten
Marleen Claes40
Pieter Goossens0
Karim Benali15
Sofie Hermans55
Noah De Smet0

Probeer het zelf

Jonas schenkt 60 spaarpunten aan Amira. Schrijf het als één transactie.

Klaar voor meer?

De volledige les heeft 6 oefeningen, van makkelijk naar uitdagend, met hints, punten en een reeks die je kan opbouwen.

Begin aan de les
← VorigeOpruimenVolgende →Een nummer per rij
SQL-onderwerpenSpiekbriefjeExcelRanglijstAccountPrivacyEnglish