adoquery执行多个sql无法回滚

时间:2017-12-19 02:19:18

标签: sql-server sql-server-2008 delphi sql-server-2000

qryTemp2TADOQuery

  1. 如果像这样的代码,将调用回滚并且不会进行插入,但我认为,如果数据库在云上,则需要更多时间。

    qryTemp2.Connection.BeginTrans;
    try
        qryTemp2.Close;
        qryTemp2.SQL.Text := 'insert sql1,this sql is good';
        qryTemp2.ExecSQL;
    
        qryTemp2.Close;
        qryTemp2.SQL.Text :='insert sql2,this sql will raise a exception';
        qryTemp2.ExecSQL;
    
        qryTemp2.Connection.CommitTrans;
    except
        on e:Exception do
        begin
            qryTemp2.Connection.RollbackTrans;
            Exit;
        end;
    end;   
    
  2. 如果我这样写,则会插入sql1并且不会调用回滚。 我可以做一些事情来回滚吗?

    qryTemp2.Connection.BeginTrans;
    try
        qryTemp2.Close;
        qryTemp2.SQL.Text :=    'insert sql1,this sql is good'+#13#10+
                                'insert sql2,this sql will raise a exception';
        qryTemp2.ExecSQL;
    
        qryTemp2.Connection.CommitTrans;
    except
        on e:Exception do
        begin
            qryTemp2.Connection.RollbackTrans;
            Exit;
        end;
    end;
    
  3. 谢谢你!

0 个答案:

没有答案