我的程序,经常出现“无法再此回话中启动更多的事务”是什么意思?

NEEZA哪吒 2021-05-22 09:37:43
ADOConnection1.BeginTrans;

ADOConnection1.CommitTrans;

事务结束后还需要做什么吗?

...全文
3042 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果写入三个表的数据没有关联就没有问题
NEEZA哪吒 2021-05-23
  • 打赏
  • 举报
回复
引用 6 楼 早打大打打核战争 的回复:
应该就是你的代码导致嵌套事务太多造成的,可以试一下: if ADOConnection1.InTransaction then ShowMessage('当前事务处理未完成') else begin ADOConnection1.BeginTrans; // ... ADOConnection1.CommitTrans; end;
谢谢, 在问一下,我同时写入数据的表,最多3个,不使用事务会有问题吗?
  • 打赏
  • 举报
回复
应该就是你的代码导致嵌套事务太多造成的,可以试一下:
if ADOConnection1.InTransaction then
ShowMessage('当前事务处理未完成')
else
begin
ADOConnection1.BeginTrans;
// ...
ADOConnection1.CommitTrans;
end;
NEEZA哪吒 2021-05-22
  • 打赏
  • 举报
回复
必须使用try吗?
NEEZA哪吒 2021-05-22
  • 打赏
  • 举报
回复
ADOConnection1.BeginTrans; 在这里,有ADOQuery1、ADOQuery2、ADOQuery,分别向3个不同的表写数据,如果不启用事务管理,可以吗?因为我担心,1写入了,2出错了。所以使用事务,但是使用事务后好像是容易写数据失败。 ADOConnection1.CommitTrans;
  • 打赏
  • 举报
回复
应该是你使用了嵌套事务处理,也就是在BeginTrans CommitTrans内部嵌套了另外的事务,通常数据库对嵌套的事务处理层数是有限制的,因为事务处理是很消耗资源的操作

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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