使用事务出现了错误怎么还能插入?

fxbird 2005-03-29 01:20:59
test2表的userno字段是整形,我故意插入一个字符串,按理说应该回退,test1中插入的值也会被删除,但为什么每次都没有。
<%@TRANSACTION=Required%>
<!--#include file="conn.asp"-->
<%
on error resume next
cnn.BeginTrans
cnn.execute "insert into test1 values(1)"
cnn.execute "insert into test2(userno) values(""hello"")"
num=err.number
if num=0 then
cnn.committrans
cnn.close
else
cnn.rollbacktrans
response.Write(err.description)
cnn.close
response.End()
end if
%>
...全文
88 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxbird 2005-03-29
  • 打赏
  • 举报
回复
conn.asp:
Set cnn=Server.CreateObject("ADODB.Connection")
cnn.cursorlocation=2 '服务器光标
cnn.open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sb;pwd=111;Initial Catalog=check;Data Source=(local)"

to binbin50:
去掉了声明就更不能使用事务了。
binbin50 2005-03-29
  • 打赏
  • 举报
回复
cnn.execute "insert into test1 values(1)"這個是不有錯呢
我改為cnn.execute "insert into test1(userno) values(1)"
binbin50 2005-03-29
  • 打赏
  • 举报
回复
我這邊不會啊,不過我把<%@TRANSACTION=Required%>去掉了
cheng17 2005-03-29
  • 打赏
  • 举报
回复
<%
err.clear'这里先清除错误试一下
on error resume next
cnn.BeginTrans
cnn.execute "insert into test1 values(1)"
cnn.execute "insert into test2(userno) values(""hello"")"
num=err.number
if num=0 then
cnn.committrans
cnn.close
else
cnn.rollbacktrans
response.Write(err.description)
cnn.close
response.End()
end if
%>

检查一下你这页涉及到的程序,可能是其它地方有错,我也经历过
binbin50 2005-03-29
  • 打赏
  • 举报
回复
你把conn.asp也帖出來吧
binbin50 2005-03-29
  • 打赏
  • 举报
回复
我試試再說
goodstuday 2005-03-29
  • 打赏
  • 举报
回复
关注
fxbird 2005-03-29
  • 打赏
  • 举报
回复
楼上,那我的代码到底错在哪,你把语句都写在组件里,我也看不明白呀。我的数据库是sqlserver2000,组件服务跟它有何关系?要像你说的asp里不能用事务,如果无法使用组件,那还用它干嘛呢
myvicy 2005-03-29
  • 打赏
  • 举报
回复
“事务”是只能有成功或失败两种状态的整体操作。事务进程用于保证数据库更新的可靠性。当对数据库进行许多关联更改或同时更新多个数据库时,需要确保所有更改都准确执行。如果任何更改失败,则需要恢复到数据库表的原始状态。

如果没有“组件服务”,必须编写脚本和组件以便手工跟踪请求的更改,如果任何更改失败,还要手工恢复数据。
脚本本身无法确定事务是成功还是失败。不过,可以编写在事务提交或中止时可供调用的事件。例如,假设有一个贷记银行帐户的脚本,需要根据事务状态向用户返回不同的页面。可以使用“OnTransactionCommit”和“OnTransactionAbort”事件来为用户写入不同的响应。

<%@ TRANSACTION=Required %>

<%
'缓存输出以便显示不同的页。
Response.Buffer = True
%>

<HTML>
<BODY>
<H1>欢迎使用联机银行服务</H1>


<%
Set BankAction = Server.CreateObject("MyExample.BankComponent")
BankAction.Deposit(Request("AcctNum"))
%>

<P>谢谢。正在处理您的事务。</P>
</BODY>
</HTML>

<%
'如果事务成功则显示该页。
Sub OnTransactionCommit()
%>
<HTML>
<BODY>

谢谢。您的帐号已获得信任。

</BODY>
</HTML>

<%
Response.Flush()
End Sub
%>

<%
'如果事务失败则显示该页。
Sub OnTransactionAbort()
Response.Clear()
%>
<HTML>
<BODY>

无法完成您的事务。

</BODY>
</HTML>
<%
Response.Flush()
End Sub
%>

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧