如何在delphi中在客戶端對多表處理做事務處理

xiaoxueren1983 2008-11-27 01:56:53
系統用SocketConnection做遠程連結,在客戶端上用clientdataset對兩個sql表做insert操作,只要有一個表插入不成功,就清除兩個表的插入數據,請問用事務怎麼寫?
...全文
90 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxueren1983 2008-11-28
  • 打赏
  • 举报
回复
我再試一下.
謝謝yf520gn.
yf520gn 2008-11-28
  • 打赏
  • 举报
回复
那你自己做一个事务好了,设一个全局变量,比如说A,初始值为0,朝主表插入完数据后把A设为1,朝明细表插完数据后设为2,
在插入主表和明细后分别判断A的值,如果不是1,或者2,就删除刚才插入的数据。大体思路是这样,你自己再考虑考虑
xiaoxueren1983 2008-11-28
  • 打赏
  • 举报
回复
我的情況是這樣的,現在有兩個表,是主從關係的,我遠程從另外一個數據庫服務器取得數據,往我現在的這個數據庫插入,先插入主表紀錄,再插入從表的紀錄,如果在插入從表時出錯,那麼之前插入的從表紀錄和主表紀錄都要取消掉.請問這樣怎麼做?
genispan 2008-11-27
  • 打赏
  • 举报
回复
在服务端接口里定义一个方法,把你要处理的这些值传到服务端去。
在服务端启动事务,把这些数据更新到数据库中。 这个貌似更好
genispan 2008-11-27
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20060928/20/5055365.html 给你个帖子看看吧
yf520gn 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiaoxueren1983 的回复:]
但是SocketConnection沒有begintrans.
[/Quote]
你怎么用SocketConnection操作数据库的?
xiaoxueren1983 2008-11-27
  • 打赏
  • 举报
回复
但是SocketConnection沒有begintrans.
genispan 2008-11-27
  • 打赏
  • 举报
回复

ADOConnection1.BeginTrans ;
try
ADOCommand1.CommandText:='insert into test1(id,name) values(:number,:char)';
ADOCommand1.Parameters.Items[0].Value:=1;
ADOCommand1.Parameters.Items[1].Value:='a';
ADOCommand1.Execute;

ADOCommand1.CommandText:='insert into test1(id,name) values(:number,:char)';
ADOCommand1.Parameters.Items[0].Value:=2;
ADOCommand1.Parameters.Items[1].Value:='b';
ADOCommand1.Execute;
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;

原理基本与这类似 try一下 有异常就回滚

5,386

社区成员

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

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