For enterprise database management systems that support transaction processing, instructs the database management system to treat multiple database operations as a single transaction. Provides database commit and rollback processing. See the documentation for your database management system to determine whether it supports SQL transaction processing.
<cftransaction
action = "begin" or "commit" or "rollback"
isolation = "read_uncommitted" or "read_committed" or
"repeatable_read" > </cftransaction>
cfinsert, cfprocparam, cfprocresult, cfquery, cfqueryparam, cfstoredproc, cfupdate; Commits, rollbacks, and transactions in Introduction to Databases and SQL in ColdFusion MX Developer's Guide
Attribute | Req/Opt | Default | Description |
---|---|---|---|
action |
Optional |
begin |
|
isolation |
Optional |
|
ODBC lock type:
|
If you do not specify a value for the action
attribute, automatic transaction processing proceeds as follows:
cfquery
operations within the transaction block complete without an error, the transaction is committed.
cfquery
tag generates an error within a cftransaction
block, all cfquery
operations in the transaction roll back.
If you do not specify a value for the isolation
attribute, ColdFusion uses the default isolation level for the associated database.
Using CFML error handling and the action
attribute, however, you can also explicitly control whether a transaction is committed or rolled back, based on the success or failure of the database query. Within a transaction block, you can do the following:
<cftransaction action = "commit"/>
tag within the block
<cftransaction action = "rollback"/>
tag within the block
(In these examples, the slash is alternate syntax that is the equivalent of an end tag.)
Within a transaction block, you can write queries to more than one database, but you must commit or roll back a transaction to one database before writing a query to another.
To control how the database engine performs locking during the transaction, use the isolation
attribute.
<p>CFTRANSACTION can be used to group multiple queries that use CFQUERY into one business event. Changes to data that is requested by the queries are not committed to the datasource until all actions within the transaction block have executed successfully. <p>This a view-only example. <!--- <cftransaction> <cfquery name='makeNewCourse' datasource='Snippets'> INSERT INTO Courses (Number, Descript) VALUES ('#myNumber#', '#myDescription#') </cfquery> <cfquery name='insertNewCourseToList' datasource='Snippets'> INSERT INTO CourseList (CorNumber, CorDesc, Dept_ID, CorName, CorLevel, LastUpdate) VALUES ('#myNumber#', '#myDescription#', '#myDepartment#', '#myDescription#', '#myCorLevel#', #Now()#) </cfquery> </cftransaction> --->