Transactions

Met transactions kun je meerdere query’s tegelijk uitvoeren en het resultaat pas zichbaar laten zijn (voor andere query’s en processen) als de query’s allemaal zijn uitgevoerd. Zo worden de query’s niet uitgevoerd als er onderweg iets mis gaat met bijvoorbeeld de twee query’s.

Even een citaat uit een ander PHPhulp artikel:

Quote:
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.

http://www.phphulp.nl/php/tutorials/3/274/503/

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Wat is het?
  2. Werken met PHP en PostgreSQL
  3. Wat zijn de voordelen?
  4. Datatypes
  5. Wat zijn de nadelen?
  6. Transactions
  7. Row-level locking
  8. Stored procedures
  9. Waar op te letten als ik MySQL gewend ben?

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.