-->ColdFusion 初级教程-->事务处理(CFTRANSACTION)

ColdFusion

后页 前页
目录
北极星书库
事务处理(CFTRANSACTION)


你可以用CFTRANSACTION标签实现事务处理。一个CFTRANSACTION标签内的所有查询被视为一个事务处理单元。这意味着只有事务处理代码块中的所有查询都正确执行后,才能完成对数据库的修改。如果其中的一个查询发生了任何错误,则事务处理代码块中此查询之前的所有操作都被还原。


下面的例子演示了CFTRANSACTION标签的使用。如果第二个查询产生了错误,CFTRANSACTION保证了前一个查询所作的改动被还原,从而维持数据库中数据的一至性。


<CFTRANSACTION>


<CFQUERY NAME="WithdrawCash"


DATASOURCE="BankDB">


UPDATE Accounts


SET Balance=Balance - #Amount#


WHERE Account_ID=#AccountFrom#


</CFQUERY>


<CFQUERY NAME="DepositCash"


DATASOURCE="BankDB">


UPDATE Accounts


SET Balance=Balance + #Amount#


WHERE Account_ID=#AccountTo#


</CFQUERY>


</CFTRANSACTION>


注意,只有对同一个数据源的操作才支持事务处理。


你可以指定CFTRANSACTION标签的可选属性ISOLATION。该属性提供了更精细的控制,控制数据库引擎在执行事务处理时如何锁定数据。


ISOLATION属性的合法值有:


???????????????·READ_UNCOMMITTED


?????????????·READ_COMMITTED


?????????????·REPEATABLE_READ


??????????·SERIALIZABLE


注意:VERSIONING不再是ISOLATION属性的合法值,ColdFusion不再支持这个值。


事务处理的ODBC驱动程序支持


并非所有的驱动程序都支持事务处理,也并非所有支持事务处理的驱动程序都支持所有的ISOLATION级别。当你试图对某个驱动程序使用事务处理/锁定级别的组合时,ColdFusion会查询该驱动程序的事务处理能力。如果驱动程序不具备所需的事务处理能力,则ColdFusion返回一个错误。


关于驱动程序所支持的ISOLATION级别及其对每种级别如何实现等内容,需参考具体驱动程序的有关文档。


小结:


本章内容是本手册的重点之一,建议仔细阅读,并读懂所有的例子程序。需要强调的内容有:


·Form中隐含字段的使用(传参,数据输入检查)。


·CFINSERT和CFUPDATE标签要求Form字段名与要操作的数据库字段名相同。


·根据数据库查询结果建立动态Form。


·根据Form提交结果建立动态SQL语句。


后页
前页
目录
北极星书库