On 4/13/07, Bill Moseley <[EMAIL PROTECTED]> wrote:
> So, for example, in Catalyst in an end() (or something at the end) you
> would look for errors and then do a rollback, otherwise commit? And
> you look at AutoCommit to see if you need to do either of those, I
> assume.
No, it's much simpler than that. Maybe Catalyst complicates things
with some extra eval wrapping. In my CGI::Application app, I just
turn on RaiseError. If nothing goes wrong, the changes get committed
when I exit the block with AutoCommit turned off. There's no need for
an explicit commit. (And because I use local $sbh->{AutoCommit}, it
won't commit until I leave the highest level block that initiated a
transaction, so it amounts to fake nested transactions but with
automatic scoping.)
If there's an exception, I believe DBI issues a rollback
automatically, and I have a rollback at the end of every request just
in case, like Apache::DBI does. I don't currently have any cases
where I try to rollback and continue the request, so I don't trap the
exceptions.
> In general I like to get in, get the transaction done and get out
> because I might have a longer task that follows and don't want the
> transaction left open during that time.
My transactions are as small as possible, to avoid holding locks. I
only use longer ones in bulk loading situations where it makes a big
difference. I'm not really following why the fake nested transactions
help with this.
> Perhaps a cleaner way (other than queuing up the task for an external
> process) would be push a sub onto an array with the code to run after calling
> commit.
Sorry, I'm not sure what problem you're trying to solve there.
- Perrin
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Rose-db-object mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/rose-db-object