[ASP 트랜잭션(Transaction) 처리]
트랜잭션 처리를 위한 ASP용 짧은 예제입니다. 테이블은 트랜잭션 테스트용으로 Test01, Test02 라는 이름의 작은 테이블 두개를 만들었습니다. 이렇게 짧은 테이블로만 개발 할 수 있으면 정말 좋겠습니다^^.
Test01 |
Test02 |
Create table test01 ( mem_uid varchar(20) not null, idate datetime not null ); |
Create table test04 ( memuid varchar(20) not null, point int not null, idate datetime not null ); | |
아래는 이 두개의 테이블을 이용해서 트랜잭션 처리를 하는 짧은 소스입니다. On Error Resume Next를 사용해서 데이타베이스에서 출력하는 에러문은 지나치게 하고 Rollback이 발생했을때 에러문이 출력됩니다.
아래 소스에서는 Test02 테이블에 데이타 Insert 과정에서 point 값이 생략됨으로 에러가 발생하게 됩니다.
<!--#include file="dbconnect/dbconnect.asp"--> <OBJECT RUNAT=server PROGID=ADODB.Connection ID=db></OBJECT> <%
tblname1 = "test01" '트랜잭션에 사용될 테스트용 테이블1입니다." tblname2 = "test02" '트랜잭션에 사용될 테스트용 테이블2입니다." memuid = "webmadang.net" '사용자아이디
Dim dberr dberr = 0
On Error Resume Next db.begintrans()
sql = "insert into " & tblname1 & " ( memuid, idate ) values ('"&memuid&"',getdate())" db.execute(sql) dberr = dberr + db.errors.count
sql = "insert into " & tblname2 & " ( memuid, idate ) values ('"&memuid&"', getdate())" db.execute(sql) dberr = dberr + db.errors.count
If dberr > 0 Then db.rollbacktrans() db.close response.write "<center><br><br>회원가입 처리중 에러가 발생 했습니다." response.write "에러:<br><br><font color='red'>"&Err.Description&"</font>" response.write "<br><br>위의 에러 내용을 사이트관리자에게 문의하여 주시기 바랍니다.</center>" Err.close() Response.end Else db.committrans() response.write "회원가입되셨습니다." End if
db.Close %> |
아래 그림은 Rollback시 출력되는 화면입니다. 화면 출력후 test01 테이블과 test02 테이블을 확인해 보면 정확히 RollBack 되어 있음을 알수 있습니다.
작성자: 다자래(mfcchang@naver.com) 웹제작 토탈 커뮤니티 http://www.webmadang.net | | |
|
|