[PHP/MySQL] Meerdere queries niet uitvoeren bij error

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dag mensen,

Op dit moment ben ik een systeem aan het programmeren waarbij financiële transacties worden bijgehouden. Nu doe ik aan het einde van mijn berekeningen een aantal mysql queries waarbij huidige saldi en transacties worden geupdate.

Nu is het een groot maar dan ook erg groot probleem wanneer een van deze queries niet uitgevoerd wordt door een of andere rare error omdat dan de hele balans eruit ligt en het een gepriegel wordt dit weer allemaal terug te rekenen.

Mijn vraag:
Is het mogelijk binnen php en mysql om de queries in een soort van que te zetten, deze te checken op uitvoerbaarheid en alleen als alles goed gaat de query uit te voeren?

Bij voorbaat dank,

Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Kan met innoDB i.c.m. transactions

Acties:
  • 0 Henk 'm!

  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 25-07 07:34

wizzkizz

smile...tomorrow will be worse

Zoek eens op transactions in de docs van je db, dan kun je er voor kiezen alleen te committen wanneer alles goed is gegaan en indien er een error opgetreden is alles ongedaan te maken (rollback).

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


Acties:
  • 0 Henk 'm!

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 15-08 22:46

KompjoeFriek

Statsidioot

Wat jij nodig hebt is een feature die dezelfde naam gebruikt zoals in de financiele wereld, namelijk transactions.

Je moet hiervoor wel een database engine gebruiken die dit ondersteund (de standaard MyISAM heeft dit niet).
INNODB bv.

Even een korte uitleg:
Situatie 1:
• Je start een transaction
• alle queries gaan goed
• je commit (sluiten van transactie, alles echt doorvoeren)

Situatie 2:
• Je start een transaction
• een aantal queries gaan goed
• een querie faalt, je wilt actie ondernemen.
• je doet een rollback. (alle queries na het begin van je transactie worden ongedaan gemaakt)

WhatPulse! - Rosetta@Home - Docking@Home


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ah bedankt mensen! Hier kan ik wat mee! :*)

edit: het werkt. :)

[ Voor 20% gewijzigd door Verwijderd op 23-04-2009 19:06 ]