什么是事物机制呢
????

解决方案 »

  1.   

    例如:
    Conn.BeginTrans;
    try
    Conn.CommitTrans;
    except
    RollbackTrans;
    end;
      

  2.   

    在delphi中怎么写呢?它有是没作用吗
      

  3.   

    当如有数据库以下情况时最好用事务:
    1.两个表以上同时需要改动(如同时删除或修改两个表的数据,这两个表又有某些联系)时,则最好使用事务,以防止有一个表修改成功而另一表修改不成功,这样可以保证两个表同时修改成功或同时修改失败,以免数据的丢失
    2.有两个客户会同一时间对某个表做同一操作,最好也用事务,以免数据库死锁。参考例子:
    DM.ADOConnection1.BeginTrans;
        try
          //事件开始
          qryTmp.Close;
          qryTmp.SQL.Clear;
          qryTmp.SQL.Text:='update StockBegin set BeginNum=BeginNum+'+IntToStr(qry1['BeginNum'])+',BusinessNum=BusinessNum+'+IntToStr(qry1['BusinessNum'])+' where id='+IntToStr(qry1['SourceID'])+'';
          qryTmp.ExecSQL;      qryTmp.Close;
          qryTmp.SQL.Clear;
          qryTmp.SQL.Text:='delete from StockBegin where id='+IntToStr(sid)+'';
          qryTmp.ExecSQL;
          DM.ADOConnection1.CommitTrans;//执行事务
        except
        on E: Exception do
        begin
          DM.ADOConnection1.RollbackTrans; //事务异常则回滚
          ShowMessage(E.Message);
          Exit;
        end;
        end;