事务处理的问题!挺急的(50分)

D

dutboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用ado操作oracle数据库,再添加批量记录的时候,使用了事务处理,简要代码如下:
conn.begintrans;
for i:=0 to 50 只是说明而已
......这是赋值操作
exesql;
end;
然后在这里,将一个记录数写入文本文件
myIni.write(....);
conn.committrans; 当然还有错误处理时的rollback代码
我得问题是,如果添加失败后,将记录数写入文本文件的操作能回滚吗?是不是不能阿?
因为记录是根据写入的那个变量的值来确定起始记录号的,如果向数据库写入失败了,而写入的最大记录数却写如了文本文件,当下一次更新的时候,必然会
丢失一些数据阿。所以要保证向数据库添加的最大记录号要和文本文件中记录的号码想对应。
 
广本文件的操作当然不会回滚。你可以在事务回滚时把文本文件记录号写回来.
conn.begintrans;
try
.....
exesql;
end;
myIni.write(....);
conn.committrans;
except
conn.rollback
myIni.write(...) //在这里写回原来的记录数
end;
 
同意楼上.
 
你用的是ADO事务,肯定不支持,要想用上面的那些事务,你可以考虑用DCOM中的事务来控制
 
事务处理只是对于数据库进行的操作,
怎么可能连文本文件的操作也仅仅通过“事务处理”进行控制呢?
那必须另外手工进行控制操作
 
顶部