提问一个事务提交,造成表锁住,回滚不成功的奇怪问题。请高手帮忙。 将database1.StartTransaction;放在对数据库处理开始处; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 query1.first; //转到首记录database1.StartTransaction;while not query1.eof do begin query1.edit; //编辑QRY1 ... query1.post; //把它提交到自己本机的内存,但未真正保存到数据库。 //-- query2.edit; .... query2.post; //-- query3.insert; ... query3.post; query1.next;end;//做完循环语句,然后开始做提交 try query1.ApplyUpdates; query2.ApplyUpdates; query3.ApplyUpdates; database1.Commit; except database1.Rollback; showmessage('事务出错'); end; query1.CommitUpdates; query2.CommitUpdates; query3.CommitUpdates 事物回滚starttransaction,commit要成对才能实现事物回滚因为你没在开头写starttransaction所以就直接修改表了query1.first; //转到首记录database1.StartTransaction;while not query1.eof do begin query1.edit; //编辑QRY1 ... query1.post; //把它提交到自己本机的内存,但未真正保存到数据库。 //-- query2.edit; .... query2.post; //-- query3.insert; ... query3.post; query1.next;end;//做完循环语句,然后开始做提交 try query1.ApplyUpdates; query2.ApplyUpdates; query3.ApplyUpdates; database1.Commit; except database1.Rollback; showmessage('事务出错'); end; query1.CommitUpdates; query2.CommitUpdates; query3.CommitUpdates 一开始写在query的缓冲里,提交前database1.StartTransaction; 难道不是开始对数据库的实际事务么?? 谁用过OleContainer控件? 日期问题 cxGrid如何将多个从表的数据显示在一个Level上? 例如: 强烈支持网上实时、远程及遥控面试 使用installshield制作安装程序得时候如何添加使用说明! dbchart问题 在线散分:求Delphi源代码免费下载网站地址! 如何在程序中画箭头? 怎么去除窗口的控制框?即没有最大最小关闭控制按钮. 请大家讨论一下,DELPHI里DLL文件和PACKAGE文件各自有何优缺点? 怎么样让listbox中的内容可以让用户随便的改变次序? 请问如何能通过程序得到其他正在运行程序的画面上的文字内容?谢谢啦。
begin
query1.edit; //编辑QRY1
...
query1.post; //把它提交到自己本机的内存,但未真正保存到数据库。
//--
query2.edit;
....
query2.post;
//--
query3.insert;
...
query3.post;
query1.next;
end;//做完循环语句,然后开始做提交
try
query1.ApplyUpdates;
query2.ApplyUpdates;
query3.ApplyUpdates;
database1.Commit;
except
database1.Rollback;
showmessage('事务出错');
end;
query1.CommitUpdates;
query2.CommitUpdates;
query3.CommitUpdates
因为你没在开头写starttransaction所以就直接修改表了
query1.first; //转到首记录database1.StartTransaction;while not query1.eof do
begin
query1.edit; //编辑QRY1
...
query1.post; //把它提交到自己本机的内存,但未真正保存到数据库。
//--
query2.edit;
....
query2.post;
//--
query3.insert;
...
query3.post;
query1.next;
end;//做完循环语句,然后开始做提交
try
query1.ApplyUpdates;
query2.ApplyUpdates;
query3.ApplyUpdates;
database1.Commit;
except
database1.Rollback;
showmessage('事务出错');
end;
query1.CommitUpdates;
query2.CommitUpdates;
query3.CommitUpdates