什么时候需要事务处理

昨天对事务处理进行了深入的了解一番,之后突然冒出一个问题:什么时候需要事务处理?众所周知,使用事务处理能使一系列操作"同生共死",在很在程度上保证了程序的可用性,但却不能因此而滥用,如下程序:

<%
Dim conn,sqlstr
Set conn=server.createobject("ADODB.connection")
Conn.connectionstring="provider=microsoft.jet.oledb.4.0; data source=" & server.mappath("db1.mdb")
Conn.open
sqlstr="insert into test(name) values('aaa')"
On error resume next
Conn.BeginTrans
conn.execute(sqlstr)
If err.number = 0 then
Conn.CommitTrans
Response.write ""
Else
Conn.RollbackTrans
Response.write ""
End if
On Error GoTo 0
Conn.close
Set conn=nothing
%>

整个过程只有一个操作,在此段程序中,事务处理完全是形同虚设,完全可以除去,再看下边这段程序:

<%
Dim conn,sqlstr,sqlstr2,sqlstr3
Set conn=server.createobject("ADODB.connection")
Conn.connectionstring="provider=microsoft.jet.oledb.4.0; data source=" & server.mappath("db1.mdb")
Conn.open
sqlstr="insert into test(name) values('aaa')"      '正确的SQL语句
sqlstr2="insert into test(name2) values('bbb')"  '错误的SQL语句
sqlstr3="insert into test(name) values('ccc')"    '正确的SQL语句
On error resume next
Conn.BeginTrans
conn.execute(sqlstr)
conn.execute(sqlstr2)
conn.execute(sqlstr3)
If err.number = 0 then
Conn.CommitTrans
Response.write ""
Else
Conn.RollbackTrans
Response.write ""
End if
On Error GoTo 0
Conn.close
Set conn=nothing
%>

当执行第二条错误的SQL语句时,第二个操作失败,事务处理机制生效,第一个操作也随之无效,在此,事务处理起到了作用。

可见,事务处理只有用在一系列有关系的操作时方能显示出其作用,对于单个操作没有实际的意义。

上一篇: 调用动网头部
下一篇: 通用媒体播放器(JS版,ASP版)
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 1 | 引用: 0 | 查看次数: 4706
发表评论
登录后再发表评论!