日期:2014-05-17  浏览次数:20856 次

用事务插入数据后出错,在线等!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