sqlserver 提交事务后经常没有完全更新

weixin_39724463 2017-09-13 04:17:05
麻烦各位大大了,我用delphi,然后
adoconnection1.BeginTrans;
adoconnection1.Execute(sql1);
adoconnection1.Execute(sql2);
adoconnection1.Execute(sql3);
adoconnection1.Execute(sql4);
adoconnection1.Execute(sql5);
adoconnection1.CommitTrans;

执行之后,程序无异常,没有回滚,但是很多次操作之后,就会发现例如其中某一个sql3并没有执行成功,该修改的数据没有修改,而且这个时候程序也没有抛出异常,所以也就没有回滚

想问问是什么原因,怎么解决。谢谢
希望能够得到解决,再次感谢,如果分不够,可以开贴再给。

...全文
1353 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsh341999 2018-05-18
  • 打赏
  • 举报
回复
用数据集执行吧,设置一个属性就行了 AdoQuery.ExecuteOptions:=[TExecuteOption.eoExecuteNoRecords]; AdoQuery.Execute(?); AdoQuery.Execute(?); AdoQuery.Execute(?);
victor_yang 2018-05-17
  • 打赏
  • 举报
回复
你试试先将前2条commit之后,后面3个再做一个事务
nm_wyh 2017-11-28
  • 打赏
  • 举报
回复
引用 5 楼 xiaocongzhi 的回复:
Sql3是不是有where条件限制了是否执行
除这个之外,另外就是SQL3执行后,后面的两条语句是否把SQL3的结果覆盖掉也是有可能的。
xiaocongzhi 2017-11-02
  • 打赏
  • 举报
回复
Sql3是不是有where条件限制了是否执行
victor_yang 2017-11-01
  • 打赏
  • 举报
回复
用SQL SERVER Profiler跟踪执行的sql语句就清楚了
jinhx 2017-10-31
  • 打赏
  • 举报
回复
更新不成功不表示一定要异常,程序本身没问题,但你自己的程序逻辑可能不完整,更新不成功需要给出一定的处理
lyhoo163 2017-10-30
  • 打赏
  • 举报
回复
1、这是事务处理,逐条检查SQL语句,是否有错误,只要其中一条有错,就不能执行任何一条SQL。 2、你说的只有一条。未执行,不大可能。如果出现这类问题,应该是MSSQL服务器软件有问题了。这也许全部执行了,你未查觉,再重新显示(刷新)数据看看。
victor_yang 2017-10-30
  • 打赏
  • 举报
回复
Commit之后,对应的Dataset Query最好要Requery一下刷新数据 比如 adoconnection1.BeginTrans; adoconnection1.Execute(sql1); adoconnection1.Execute(sql2); adoconnection1.Execute(sql3); adoconnection1.Execute(sql4); adoconnection1.Execute(sql5); adoconnection1.CommitTrans; adoquery1.requery(); adoquery2.requery(); ......

2,498

社区成员

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

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