您可以使用 ObjectContext 对象提交或放弃一项由 Microsoft Transaction Server (MTS) 管理的事务,它由 ASP 页包含的脚本初始化。
ASP 包含 @TRANSACTION 指令时,该页会在事务中运行,直到事务成功或失败后才会终止。
ObjectContext.method
SetComplete | SetComplete 方法声明脚本不了解事务未完成的原因。如果事务中的所有组件都调用 SetComplete,事务将完成。 |
SetAbort | SetAbort 方法声明被脚本初始化的事务未完成,无法更新源。 |
OnTransactionCommit |
OnTransactionAbort |
ObjectContext 实现 MTS ObjectContext 对象的两种方法。 SetAbort 方法完全终止事务。这样,MTS 不更新在第一阶段联系的源。事务终止时,将处理脚本的 OnTransactionAbort 事件。
调用 SetComplete 方法并不一定意味着事务已完成。只有脚本调用的所有事务组件都调用了 SetComplete,事务才能完成。在大多数实例中,如果结束处理时未调用 SetAbort,脚本通常被假定为完成的,所以不一定要在脚本内调用 SetComplete。
ObjectContext 展示了 SetAbort 和 SetComplete 以外的六种方法。这些方法可用于脚本调用的组件,但不能直接用于 ASP 脚本。
这里示范使用 SetAbort 和 SetCommit 的方法。Sales.htm 文件获取处理销售请求所需的数据。第二个文件——SalesVerify.asp 中的脚本使用两个对象——Inventory 和 Sales 处理销售。如果 Inventory 返回了错误代码表示供销售的存货不足,就会调用 SetAbort。如果 Inventory 对象没有返回错误代码,将会调用 SetComplete 处理销售请求。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <HTML> <HEAD> <TITLE>Sales Order</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"><FONT FACE="ARIAL,HELVETICA"> <H2>Sales Order Form </H2> <FORM METHOD=POST ACTION="SalesVerify.asp"> <P>Please enter the product code, quantity, and your account number. <INPUT TYPE=TEXT NAME=QuantityToBuy> <INPUT TYPE=TEXT NAME=ProductCode> <INPUT TYPE=TEXT NAME=AccountIn> <P> <INPUT TYPE=SUBMIT> </FONT> </BODY> </HTML>
<%@ Transaction = Required %> <% Set CurrentQOH = Server.CreateObject("Mycomp.Inventory") Set CurrentSales = Server.CreateObject("Mycomp.Sales") CheckQuantity = Request("QuantityToBuy") CheckProduct = Request("ProductCode") QuantityStatus = CurrentQOH.CheckQOH(CheckQuantity,CheckProduct) If QuantityStatus = None ObjectContext.SetAbort Response.Write "Sorry, there is not sufficient quantity on hand to process your sale." Else ObjectContext.SetComplete Account = Request("AccountIn") Saleupdate = CurrentSales.PostIt(AccountIn) End If %>
在 Web 应用程序 中创建事务性脚本。