执行多条sql语句如何保证完整性。
如果我要按一个按钮要执行几个sql操作。1.update ....2.update ....3.delete ....如果执行到3,出现意外情况,导致3没执行,可是1和2都执行了.
有没办法如果到出错了,就放弃前面执行的??

解决方案 »

  1.   

    启用数据库事务处理。比如ADO:
    try
      ADOConnection1.BeginTrans;
      \\Do Update
      ADOConnection1.CommitTrans;
    except
      ADOConnection1.RollbackTrans;
    end;
      

  2.   

    Kevin_Lmx(繁华阅尽) 
    說的對。就是利用事物了。提交一起提交、要不就是一起回滾
      

  3.   

    用except语句遇到错误就跳过。
      

  4.   

    能讲讲那个是什么意思吗?不大理解。我用的是不同的ADOConnection,不知道可以吗,因为访问了两种不同的数据库
                sql1 := '...';
                ADOQuery1.SQL.Clear;
                ADOQuery1.Close;
                ADOQuery1.SQL.Add(sql) ;
                ADOQuery1.ExecSQL;            sql2 := '...';
                ADOQuery2.SQL.Clear;
                ADOQuery2.Close;
                ADOQuery2.SQL.Add(sql) ;
                ADOQuery3.ExecSQL;           sql3 := '...';     
               ADOQuery3.SQL.Clear;
                ADOQuery3.Close;
                ADOQuery3.SQL.Add(sql) ;
                ADOQuery3.ExecSQL;
      

  5.   

    哦,那我这样行吗?因为我有2个
    try
      ADOConnection1.BeginTrans;
      ADOConnection2.BeginTrans;  \\Do Update
      ADOConnection1.CommitTrans;
      ADOConnection2.CommitTrans;except
      ADOConnection1.RollbackTrans;
      ADOConnection2.RollbackTrans;end;
      

  6.   

    不建议用触发器来保证数据库的完整性,这是经验!!在软件开发过程中要是触发器产生的问题是难以发现的。还有楼主没有必要在一个工程里用多个ADOConnection的。用 Kevin_Lmx(繁华阅尽) 的事务处理可以做到的。