I had the same question myself. Is CFTransaction only for grouping queries, or does it allow for the grouping of storedprocs?
-----Original Message----- From: Jon Gunnip [mailto:[EMAIL PROTECTED] Sent: Thursday, December 04, 2003 1:57 PM To: [EMAIL PROTECTED] Subject: RE: [CFCDev] cftransaction with CFC's Justin, >From my understanding, it only makes sense to use <cftransaction> when you want to group multiple database operations and be assured that together they either all success or are all rolled back. If you can't put 2 procedures in your transaction block and have both of them rolled back if the second one fails, then the transaction is not doing much for you. Maybe I am not understanding you correctly? I saw on another newsgroup that in MX 6.0, a CFC method call inside a transaction implicitly called "commit" upon return, thereby making it useless to have more than one CFC method call that does database work inside a single transaction. I haven't seen that problem in 6.1. This is the only way I can get cftransaction to work with CFC's in MX 6.1: <cftransaction action="begin"> <cftry> <cfset Page.DoInsert("OK") > // succeeds; does a database insert <cfset Page.DoInsert() > // fails; so "rollback" in catch block rolls back database insert on previous line <cfcatch type="any" > <cftransaction action="rollback"> </cfcatch> </cftry> </cftransaction> Jon >>> [EMAIL PROTECTED] 12/04/03 01:27PM >>> I think the solution is to implement it in a persistent cfc? I use what Barney suggested in my Mach-ii apps, and have not encountered any problems. Well, I don't think it works quite right becuase if in that transaction block I call two storedprocs, and one fials, the transaction does not get rolled back? But I think that is due to my misunderstanding of <cftransaction>? Here is my listener code... <cfscript> variables.model.beginTransAction(); try { ///this calls the indivicual DAO which calls the schema and inserts the individual arguments.event.getArg("individual").getIndividualAddress().setIndividualID( variables.individualDAO.create (arguments.event.getArg("individual"))); //This calls the individual DAO adds the address (would like to announce a new event, but not sure how to handle //in a single transaction variables.individualDAO.addAddress(arguments.event.getArg("individual").getI ndividualAddress()); variables.model.commitTransaction(); } catch (any e){ errorMsg = "An Error Has Occured, Did We Roll Back The Transaction?"; variables.model.rollbackTransaction(); variables.model.throwError(e,errorMsg); } </cfscript> Here are the methods from my transaction manager Thanks, Jusitn -----Original Message----- From: Ben Curtis [mailto:[EMAIL PROTECTED] Sent: Thursday, December 04, 2003 1:15 PM To: [EMAIL PROTECTED] Subject: Re: [CFCDev] cftransaction with CFC's > I have tried to implement this but when I try to write the PersonPersisotr.beginTransaction() and PersonPersistor.endTransaction() with functions like this: > > <cffunction name="beginTransaction" > > <cftransaction> > </cffunction> > > <cffunction name="endTransaction" > > </cftransaction> > </cffunction> > > I get a CF parsing error: "Context validation error for tag cftransaction: The end tag </cftransaction> encoutered on line 253 at column 19 requires a matching start tag." > > I hope that if I could get by the CF parser, then the code would function as expected. Does anyone know how to "trick" the parser into allowing a lone </cftransaction> tag? Or is this hopeless? I too encountered this problem. I haven't tested my solution yet, but I've been thinking that what I'll need to do is avoid cftransaction altogether and just code the transaction commands directly in SQL in a cfquery tag. This, of course, makes it database-specific, but at least the code is extracted into a centralized location. -- Ben Curtis WebSciences International http://www.websciences.org/ v: 310 478 6648 f: 310 235 2067 ---------------------------------------------------------- You are subscribed to cfcdev. To unsubscribe, send an email to [EMAIL PROTECTED] with the words 'unsubscribe cfcdev' in the message of the email. CFCDev is run by CFCZone (www.cfczone.org) and supported by Mindtool, Corporation (www.mindtool.com). An archive of the CFCDev list is available at www.mail-archive.com/[EMAIL PROTECTED] ---------------------------------------------------------- You are subscribed to cfcdev. To unsubscribe, send an email to [EMAIL PROTECTED] with the words 'unsubscribe cfcdev' in the message of the email. CFCDev is run by CFCZone (www.cfczone.org) and supported by Mindtool, Corporation (www.mindtool.com). An archive of the CFCDev list is available at www.mail-archive.com/[EMAIL PROTECTED] ---------------------------------------------------------- You are subscribed to cfcdev. To unsubscribe, send an email to [EMAIL PROTECTED] with the words 'unsubscribe cfcdev' in the message of the email. CFCDev is run by CFCZone (www.cfczone.org) and supported by Mindtool, Corporation (www.mindtool.com). An archive of the CFCDev list is available at www.mail-archive.com/[EMAIL PROTECTED] ---------------------------------------------------------- You are subscribed to cfcdev. To unsubscribe, send an email to [EMAIL PROTECTED] with the words 'unsubscribe cfcdev' in the message of the email. CFCDev is run by CFCZone (www.cfczone.org) and supported by Mindtool, Corporation (www.mindtool.com). An archive of the CFCDev list is available at www.mail-archive.com/[EMAIL PROTECTED]
