ASP的事务控制功能。IIS通过和MTS服务联系,可以控制多种支持事务的系统,当程序发出“失败”的信号时,所有支持事务的系统均将自动回滚,即使操作已经正式完成;对不支持事务的操作也提供了方便的手工回滚方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <%@ TRANSACTION = Required %> On Error Resume Next Set Conn=Server.CreateObject( "ADODB.Connection" ) Conn.Open .... Conn.Execute "INSERT...." Conn.Close Set Conn= Nothing Set Conn2=Server.CreateObject( "ADODB.Connection" ) Conn2.Open .... Conn2.Execute "INSERT...." Conn2.Close Set Conn2= Nothing Set FSO=Server.CreateObject( "Scripting.FilesystemObject" ) FSO.CreateFolder "...." If Err Then ObjectContext.SetAbort '通知所有支持事务的组件回滚,并运行手工回滚代码 Else ObjectContext.SetComplete End If Set FSO= Nothing Sub OnTransactionAbort Response.Write "错误" FSO.DeleteFile Server.Mappath( "a.txt" ) 'FSO的手工回滚——删除文件夹 End Sub Sub OnTransactionCommit Response.Write "胜利完成任务" End Sub %> |
第一行的<%@ TRANSACTION = Required %>表示这一页ASP文件需要MTS的事务支持。中间的各个操作都按普通顺序书写,而不用考虑回滚问题。在程序最后判断是否有错误。如果有,调用ObjectContext的SetAbort方法,IIS会通过MTS服务通知所有支持事务的组件回滚(主要是数据库),并且运行Sub OnTransactionAbort对不支持事务的操作手工回滚;如果没有发生错误,调用ObjectContext的SetComplete方法,则会运行Sub OnTransactionCommit来显示成功的消息。
整个ASP程序不需要为判断错误和回滚操作书写多余的代码,只须在最后进行判断,即使今后增加了多步操作,也只需要在Sub OnTransactionAbort中进行控制即可,非常方便,程序员可以专注于过程编写而不是书写纠错代码。
posted @ 2010-04-15 11:58 悟道 阅读(133) 评论(0) 推荐(0)