asp内置对象 ObjectContext 事务管理 详解

2018-09-06 12:26

阅读:471

  asp内置对象ObjectContext详解

您可以使用ObjectContext对象提交或放弃一项由MicrosoftTransactionServer(MTS)管理的事务,它由ASP页包含的脚本初始化。

ASP包含@TRANSACTION指令时,该页会在事务中运行,直到事务成功或失败后才会终止。

语法

方法
SetCompleteSetComplete方法声明脚本不了解事务未完成的原因。如果事务中的所有组件都调用SetComplete,事务将完成。
SetAbortSetAbort方法声明被脚本初始化的事务未完成,无法更新源。


事件
OnTransactionCommit
OnTransactionAbort


注释
ObjectContext实现MTSObjectContext对象的两种方法。SetAbort方法完全终止事务。这样,MTS不更新在第一阶段联系的源。事务终止时,将处理脚本的OnTransactionAbort事件。

调用SetComplete方法并不一定意味着事务已完成。只有脚本调用的所有事务组件都调用了SetComplete,事务才能完成。在大多数实例中,如果结束处理时未调用SetAbort,脚本通常被假定为完成的,所以不一定要在脚本内调用SetComplete。

ObjectContext展示了SetAbort和SetComplete以外的六种方法。这些方法可用于脚本调用的组件,但不能直接用于ASP脚本。

示例
这里示范使用SetAbort和SetCommit的方法。Sales.htm文件获取处理销售请求所需的数据。第二个文件——SalesVerify.asp中的脚本使用两个对象——Inventory和Sales处理销售。如果Inventory返回了错误代码表示供销售的存货不足,就会调用SetAbort。如果Inventory对象没有返回错误代码,将会调用SetComplete处理销售请求。

Sales.htm
<!DOCTYPEHTMLPUBLIC-//IETF//DTDHTML//EN>

<HTML>
<HEAD>
<TITLE>SalesOrder</TITLE>
</HEAD>
<BODYBGCOLOR=#FFFFFF><FONTFACE=ARIAL,HELVETICA>
<H2>SalesOrderForm</H2>

<FORMMETHOD=POSTACTION=SalesVerify.asp>
<P>Pleaseentertheproductcode,quantity,andyouraccountnumber.
<INPUTTYPE=TEXTNAME=QuantityToBuy>
<INPUTTYPE=TEXTNAME=ProductCode>
<INPUTTYPE=TEXTNAME=AccountIn>
<P>
<INPUTTYPE=SUBMIT>
</FONT>
</BODY>
</HTML>

SalesVerify.asp文件
<%@Transaction=Required%>
<%
SetCurrentSales=Server.CreateObject(Mycomp.Sales)

CheckQuantity=Request(QuantityToBuy)
CheckProduct=Request(ProductCode)
QuantityStatus=CurrentQOH.CheckQOH(CheckQuantity,CheckProduct)

IfQuantityStatus=None
ObjectContext.SetAbort
Response.WriteSorry,thereisnotsufficientquantityonhandtoprocessyoursale.
Else
ObjectContext.SetComplete
Account=Request(AccountIn)
Saleupdate=CurrentSales.PostIt(AccountIn)
EndIf
%>




评论


亲,登录后才可以留言!