目录
北极星书库
你可以用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语句。
前页
目录
北极星书库