请教一个问题:在delphi中我显示开始一个事务starttransaction,如果在这个事务中有两个对数据库操作的sql语句:一个insert语句,接着便是一个commit语句,那么是不是即使我最后调了database的rollback方法,前面所作的修改也会生效,谢谢!

解决方案 »

  1.   

    AdoConnection.begintrans;
    try
    AdoQuery1.sql.clear
    AdoQuery1.sql.add('insert into...');
    AdoQuery1.ExecSQL;
    AdoConnection.committrans;
    except
    AdoConnection.rollbacktrans;
    end;
      

  2.   

    一个insert语句,接着便是一个commit语句,既然都提交了,回滚当然就失效了,多看看书吧,这种问题或许太幼稚了。
    begintrans committrans 
      or 
    begintrans rollbacktrans
    呵呵,人家都是成双成对,何苦要插一脚呢?
      

  3.   

    提交后再回滚当然失效啦
    用法:见 zzlazio(sritsb)
      

  4.   

    楼主,似乎对rollback还没有理解吧,rollback就是取消事务.    对于每一个事务都要进行 @@error的判断