ASP에서 사용할 수 있는 @ 지시자(directive)에는 여러 가지가 있다. 그 중 트랜잭션을 담당하는 지시자는
 @TRANSACTION이다. ASP 페이지에서 사용되는 스크립트가 트랜잭션으로 처리되려면 @TRANSACTION을 사용해야 한
 다. 이것을 사용하려면 ASP 3.0, IIS 5.0 이상이 필요하다.

 @TRANSACTION을 사용하는 방법은 다음과 같다.

 <%@TRANSACTION = value%>
 

 위 value 값에는 다음과 같은 값이 들어갈 수 있다.

 Required, Requires_new, Supported, Not_Supported
 

 우선 간단한 테스트를 해보도록 하자. 다음과 같은 코드를 작성한 후 transaction1.asp로 저장시킨다.

  <%@ TRANSACTION=Required %>
  <%
 
  Server.Execute "transaction2.asp"
 
  Sub OnTransactionCommit()
  Response.Write "<p><b>트랜잭션 반영!</b><br>"
  Response.Write "OnTransactionCommit() 이벤트 핸들러 발생!"
  End Sub
 
  Sub OnTransactionAbort()
  Response.Write "<p><b>트랜잭션 취소!</b><br>"
  Response.Write "OnTransactionAbort() 이벤트 핸들러 발생"
  End Sub
 
  %>
 

 @TRANSACTION을 Required로 설정하면 ASP 페이지는 트랜잭션이 없는 것처럼 트랜잭션을 시작하거나 상위 트랜잭
 션을 연결시킨다.

 다음으로, 다음과 같은 코드를 transaction2.asp로 저장시킨다.

  <%@ TRANSACTION=Supported %>
  <%
  ObjectContext.SetComplete
  %>
 

 @TRANSACTION을 Supported로 설정하면 ASP 페이지는 상위 트랜잭션으로 연결시킨다. 즉, 이 transaction2.asp
 는 transaction1.asp에서 호출하였으므로 상위 트랜잭션인 transaction1.asp가 시작된다. 여기서
 ObjextContext 객체의 SetComplete를 호출하였으므로 이 경우는 트랜잭션으로 정상으로 처리하여 해당 트랜잭션
 을 반영하는 경우이다.

 이제 이 결과를 실행시켜 보도록 하자. 다음 링크는 transaction2.asp가 ObjectContext.SetComplete일 때
 transaction1.asp를 실행한 결과이다.

 ObjectContext.SetComplete 결과 테스트(transaction1.asp 실행)
 위 링크를 실행시키면 transaction2.asp를 실행시켰다가 ObjectContext.SetComplete를 통해 트랜잭션이 정상적
 으로 처리됐다는 호출을 받고 다시 transaction1.asp로 와서 OnTransactionCommit() 이벤트 핸들러가 발생하게
 된다.

 이번엔, transaction2.asp의 코드 중 ObjectContext.SetComplete를 다음과 같이 SetAbort로 변경해 보자.

  <%@ TRANSACTION=Supported %>
  <%
  ObjectContext.SetAbort
  %>
 

 위의 코드대로 수정했으면 transaction2.asp를 저장한 후 다시 transaction1.asp를 실행시켜보자. 다음은 수정
 된 transaction2.asp를 호출하는 transaction1.asp이다. 결과를 확인한 후 앞의 결과와 어떻게 다른지 비교해
 보기 바란다.

 ObjectContext.SetAbort 결과 테스트(transaction1.asp 실행)
 위 결과를 확인해서 알겠지만 transaction2.asp를 실행시키면 ObjectContext.SetAbort를 통해 트랜잭션이 취소
 되므로 다시 transaction1.asp로 와서 OnTransactionAbort() 이벤트 핸들러가 발생하게 된다.

 지금까지 트랜잭션으로 여러 ASP 페이지를 연결시키는 방법에 대해 살펴보았다. 여기서 주의해야할 점은
 @TRANSACTION 지시자를 사용할 경우 ASP 페이지의 첫 번째 줄에 위치해야 한다는 것이다. 그렇지 않을 경우 스크
 립트 오류가 발생하므로 주의하기 바란다.

'asp' 카테고리의 다른 글

Microsoft CAPICOM  (0) 2010.02.22
IsNull과 IsEmpty 의 차이점 비교  (0) 2010.02.09
asp  (0) 2010.01.08
HTMLEncode / URLEncode  (0) 2010.01.08
덱스트 DEXT 업로드  (0) 2009.12.21

+ Recent posts