Philip Thompson wrote:
> Hi all.
>
> I'm currently working on a project that's in its beta stage. Due to time
> restraints, we were unable to build in transactions from the beginning.
> Well, we're getting to the point where we can now put in transactions.
> Basically, I'm curious to find out your opinion on the best way to
> accomplish this.
>
> Currently, my thoughts for doing this are:
>
> <?php
> function someFunctionThatNeedsTransactions ()
> {
> $this->db->begin(); // Start transaction
> $this->db->query("SELECT..."); // Run my queries here
> $this->db->query("UPDATE...");
> // Do some PHP logic here
> $this->db->query("SELECT..."); // Run more queries
> $this->db->query("INSERT...");
> $this->db->commit(); // Commit transaction
> }
> ?>
>
> If there was a failure in one of the queries, that would be caught in
> the database class ('db' instance) and <?php $this->rollback(); ?> would
> be called. Note that all the tables are InnoDB and the above
> code/functionality works.
>
> Ideally, I would have liked to use stored procedures, but that decision
> was not mine. So are there any complications I'm potentially missing?
I'd get your db class to handle nested transactions, so if you had
something like this:
$db->begin();
....
someFunctionThatNeedsTransactions();
...
.. oops, need to rollback.
$db->rollback();
the bits between "someFunction" and the "rollback" will be committed (by
the function) and can't be rolled back.
See http://dev.mysql.com/doc/refman/5.0/en/savepoints.html
The situation might not come up but it can't hurt to have it already
built in "just in case".
--
Postgresql & php tutorials
http://www.designmagick.com/
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php