关于master/detail表的存盘问题

zwgxq 2000-10-31 02:00:00
用cachedupdate方式存盘时,如果detail表没有成功(比如说主键重复)。改正错误后
重新保存则出错。有什么办法可解决此问题?请各位帮忙。
...全文
147 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dark_thor 2000-11-13
  • 打赏
  • 举报
回复
使用TDatabase的事务方法,将所有的操作放在一个事务中,如果出错则Rollback,如下:
if not Database.InTransaction then
Database.StartTransaction;
try
...
Dataset.ApplyUpdates;
Database.Commit;
except
Dataset.CancelUpdates;
Database.Rollback;
end;


zheng 2000-11-05
  • 打赏
  • 举报
回复
用数据库的提交方法一定要在表结构的索引设为uniqe。我刚做完与你一样的事,不明白留言。
zheng 2000-11-05
  • 打赏
  • 举报
回复
你要保证提交事务的一致性。再好用数据库的applyupdates方法。如
database1.applyupdates([mastertable,detailtable]);
成功后再清缓存。detailtable.cancelupdates,mastertable.canceupdates;或用
database1.commitupdates;
最好把提交放在try....except....finally结构中。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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