James,
Here is the outline of the code that should work. Just plug in your
queries:
<cfset IsOK = True>
<cftransaction action="begin">
<cftry>
<cfquery to read from A>
<cfcatch>
<cfset IsOK = False>
</cfcatch>
</cftry>
<cfif IsOK>
<cftry>
<cfquery to save in B>
<cfcatch>
<cfset IsOK = False>
</cfcatch> <
</cftry>
<cfif IsOK>
<cftry>
<cfquery to delete from A>
<cfcatch>
<cfset IsOK = False>
</cfcatch> <
</cftry>
</cfif>
</cfif>
<cfif IsOK>
<cftransaction action="commit">
<cfelse>
<cftransaction action = "rollback">
</cfif>
</cftransaction>
-----Original Message-----
From: James Blaha [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, February 11, 2003 1:08 PM
To: CF-Talk
Subject: cftransaction HELP Please...
Hello All,
I need some help. What I�m trying to do is setup a transaction that�s
purpose is to move a record from table �A� to table �B� and if it is
successful delete it from �A.� If anything fails roll back and output
the error. Can anyone please offer some insight to either using
different code or patching what I have below?
I'm running CF5 Enterprise.
Regards,
James Blaha
Error
Context validation error in tag CFTRY
The tag is not correctly positioned relative to other tags in the
template: the last tag nested inside tag CFTRY must be a CFCATCH tag.
Currently it is a CFTRANSACTION tag.
The error occurred while processing an element with a general identifier
of (CFTRY), occupying document position (25:1) to (25:7).
<!---
Filename: Example_Delete_CFTransaction.cfm
Created by: James Blaha
Purpose: Archive data & Roll Back for deletetion if an errors occur.
Please Note:
--->
<!---__________ ** This example shows the use of cftransaction **
________--->
<html>
<head>
<title>cftransaction Example</title>
</head>
<body>
<H3>Archive data and Roll Back for deletetion if an errors occur.</H3>
<P>cftransaction can be used to group multiple queries
using cfquery into a single business event. Changes to data
requested by these queries can be committed on the basis
of the success or failure of the query by using the actions
commit and rollback, respectively.
<cftry>
<!--- ******************************************************************
--->
<!--- *************** Initialize commitIt to Yes. ******************** --->
<!--- ******************************************************************
--->
<CFSET commitIt = "Yes">
<cftransaction action = "begin">
<!--- ********* --->
<!--- *** 1 *** --->
<!--- ********* --->
<cfquery name = 'ArchiveRecord' dataSource = 'xxx'>
Insert Into Archived_Applicants
Select * From tApply
WHERE [identity] = 2
</cfquery>
<!---
*********************************************************************** --->
<!--- * Rolls back the pending insertion if a database exception is
caught. * --->
<!---
*********************************************************************** --->
<cfcatch type = "DATABASE">
<cftransaction action = "rollback"/>
<cfset commitIt = "No">
<!--- Test S --->
<BODY TEXT="1c3b85">
<DIV ALIGN="Center">
<TABLE>
<TR>
<TD WIDTH="400">
<H2>A Database Error Has Occurred !</H2>
<CFOUTPUT> #CFCATCH.Message#
<P>The following exception has occurred, TYPE= #CFCATCH.Type#
</CFOUTPUT>
</TD>
</TR>
</TABLE>
</DIV>
<!--- Test E --->
</cfcatch>
<cfif commitIt>
<cftransaction action = "commit"/>
<!--- ******************************************************************
--->
<!--- *************** Commits the pending insertion. ***************** --->
<!--- ******************************************************************
--->
<cfelse>
<cfset commitIt = "Yes">
</cfif>
<!--- ********* --->
<!--- *** 2 *** --->
<!--- ********* --->
<CFQUERY NAME="DeleteRecord" DATASOURCE="xxx">
DELETE
FROM tApply
WHERE [identity] = 2
</CFQUERY>
<!---
********************************************************************** --->
<!--- * Rolls back the pending deletetion if database exception is
caught. * --->
<!---
********************************************************************** --->
<cfcatch type = "DATABASE">
<cftransaction action = "rollback"/>
<cfset commitIt = "No">
<!--- Test S --->
<BODY TEXT="1c3b85">
<DIV ALIGN="Center">
<TABLE>
<TR>
<TD WIDTH="400">
<H2>A Database Error Has Occurred !</H2>
<CFOUTPUT> #CFCATCH.Message#
<P>The following exception has occurred, TYPE= #CFCATCH.Type#
</CFOUTPUT>
</TD>
</TR>
</TABLE>
</DIV>
<!--- Test E --->
</cfcatch>
<cfif commitIt>
<cftransaction action = "commit"/>
<!--- ******************************************************************
--->
<!--- *************** Commits the pending deletetion.
******************* --->
<!--- ******************************************************************
--->
<cfelse>
<cfset commitIt = "Yes">
</cfif>
</cftransaction>
</cftry>
</body>
</html>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4
Subscription:
http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
This list and all House of Fusion resources hosted by CFHosting.com. The place for
dependable ColdFusion Hosting.
Unsubscribe:
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4