Tmp_query.Connection.BeginTrans;
  try
            Excutesql('delete from person_archives where personnel_id='''
                + adoquery1.fieldbyname('personnel_id').asstring + '''');
            Tmp_query.Connection.CommitTrans;
            Tmp_query.free;
        except
            Tmp_query.Connection.RollbackTrans;
            Tmp_query.Free;
            exit;
        end;Trans 为事务了,
为什么要开事务,听说是为了安全,可是我看不出来,有时候使用不当,程序达不到预期效果
不知道为什么使用它,以前没有用过,请解释,当我什么也不知道

解决方案 »

  1.   

    一句 SQL 开事务意义不大,如果多句 SQL 一起执行,就需要开事务:
    其中一句 SQL 出了问题,所有操作都回滚。
      

  2.   

    >>一句 SQL 开事务意义不大,如果多句 SQL 一起执行,就需要开事务:保證數據的完整性
      

  3.   

    假如,我有五条SQL,执行到第三条出错,事务回滚后,把一二条的执行结果也会撤销掉,即不会提交
      

  4.   

    简单地说,使用事务就是防止出现错误的时候只完成了你所需要完成的操作中的一部分,举个简单的例子:
        用两个ADOQuery在一个过程里面分别更新数据,假如后面一个更新失败的话,我要把前一个更新回滚到没有更新之前的状态,假如没有“事务”这个东东的话,要自己写代码实现将会很麻烦。
        还有,在存储过程中执行多步更新时一般也要启动事务来进行保护。