A表 修改一条记录a1
B表 删除一条记录b1a1和b1有一定联系,但并不相同。我修改了A表记录a1后马上就要删除B表记录b1,
如果在删除B表记录b1失败时,要求能回到修改A表记录a1以前的状态。
否则的话,数据的状态就会前后不一致。有没有好的机制?
B表 删除一条记录b1a1和b1有一定联系,但并不相同。我修改了A表记录a1后马上就要删除B表记录b1,
如果在删除B表记录b1失败时,要求能回到修改A表记录a1以前的状态。
否则的话,数据的状态就会前后不一致。有没有好的机制?
调试欢乐多
Adoquery1.Connection:=AConn;
AConn.BeginTrans;
try
Adoquery1.Close;
Adoquery1.SQL.Clear;
Adoquery1.SQL.Text:='Select DISTINCT Unitserial,EndCode from T_EndCode where Unitserial='''+LeftStr(SFZH,6)+''' and yearmonth='''+Copy(SFZH,7,8)+'''';
Adoquery1.Open;
Adoquery2.Close;
Adoquery2.SQL.Clear;
Adoquery2.SQL.Text:='Select * from T_tempusedidCard where Division="'+LeftStr(SFZH,6)+'" and IdCard="'+SFZH+'"';
Adoquery2.Open; if (Adoquery1.RecordCount>0) and (Adoquery2.RecordCount=1) then
begin
Adoquery1.Edit;
Adoquery1.FieldByName('EndCode').AsString:=tempBin; Adoquery2.Delete;
Adoquery1.Post;
Adoquery2.Post;
AConn.CommitTrans;
end;
except on E: Exception do
begin
result:=0;
Application.MessageBox(Pchar(e.Message),'错误',Mb_OK+MB_IconError);
Aconn.RollbackTrans;
end;
end;测试了,好像没错。Post和CommitTrans 有什么区别?
ADOConnection1.BeginTrans;
ADOconnection1.CommitTrans
ADOConnection1.RollbackTrans;
2,CommitTrans 提交整个事务,可能是多个表的Insert,update等