用事务插入数据后出错,在线等!40分
不好意思,重复发贴。请各位高手帮忙。解决后分数一并送上。
http://community.csdn.net/Expert/topic/5344/5344776.xml?temp=.6856348
表:
Create table a
(
id int identity primary key,
num int not null
)
Create table b
(
fid int null,
b varchar(20)
)
代码如下:
<!--#include file= "conn.asp "-->
<%
conn.BeginTrans '事务开始
on error resume next '增加的代码
strSql1= "SET NOCOUNT ON;insert into a(num) values(123);Select @@IDENTITY "
strSql2= "insert into b(fid,b) values(ors(0), 'bbb ') "
set ors=conn.execute(strSql1)
call conn.execute(strSql2)
if err.number =0 then
conn.CommitTrans '如果没有conn错误,则执行事务提交
else
conn.RollbackTrans '否则回滚
'回滚后的其他操作
strerr=err.Description
Response.Write "数据库错误!错误日志: <font color=red> "&strerr & " </font> "
Response.End
end if
%>
目的:插入数据到表a后,立即获取其关键id,然后把id值赋给插入数据的b表fid字段。
出错信息:“不能在手动或分布事务方式下创建新的连接”
请问各位,只用事务有什么方法解决吗?
------解决方案--------------------try
:
strSql1= "SET NOCOUNT ON;insert into a(num) values(123);Select @@IDENTITY "
set ors=conn.execute(strSql1)
if not ors.eof then
strSql2= "insert into b(fid,b) values( " & ors(0).value & ", 'bbb ') "
conn.execute(strSql2)
end if