有下面一段代码,我不知道delphi是怎么去处理它自己的事务的!
  ADOConnection1.BeginTrans ;
  try
    ADOCommand1.CommandText :='insert into test1(id,name) values(:number,:char)';
    ADOCommand1.Parameters.Items[0].Value := 1;
    ADOCommand1.Parameters.Items[1].Value := 'a';
    ADOCommand1.Execute ;    ADOCommand1.CommandText :='insert into test1(id,name) values(:number,:char)';
    ADOCommand1.Parameters.Items[0].Value := 2;
    ADOCommand1.Parameters.Items[1].Value := 'b';
    ADOCommand1.Execute ;    ADOCommand1.CommandText :='insert into test1(id,name) values(:number,:char)';
    ADOCommand1.Parameters.Items[0].Value := 3;
    ADOCommand1.Parameters.Items[1].Value := 'c';
    ADOCommand1.Execute ;    ADOConnection1.CommitTrans ;  except
    ADOConnection1.RollbackTrans ;
  end;
我想知道的是,要是正好有2台电脑在进行这过程的时候,就是说数据库当前正在执行2个事务,要是时间刚刚好,那么这里的提交事务和回滚事务,他们这两个事务是否是独立的?互不影响?有没有可能第一台电脑回滚了或者提交了第二台电脑的事务?要是我改成存储过程的话,我在存储过程里面只有一个开始事务的句子,而存储过程结束的地方没有提交或者回滚的事务,而在程序里面根据提示来确定究竟是提交事务还是回滚事务,那么同样,两台不同的电脑的事务是否互相影响?

解决方案 »

  1.   

    小弟,没有程序员 工作经验,先顶一把.楼主所写的,如果有一句SQL角本执行失败,还有其它的角本执行成功,并不是所有都回滚的。
    关于会话,在SQL SERVER中简单角本,SQL SERVER有自处理、自优化。特殊情况下,可加锁,
    当然一定要注意发生死锁的现象.这个问题,就SQL SERVER而言。1.其实每一个执行单元默认是隐式事务。2.在SQL SERVER中:
           begin tran
         insert..........
          if @@error<>0 
                  begin
                    rollback tran
                    return
                   end
          update..........
           if @@error<>0 
                  begin
                    rollback tran
                    return
                   end
           insert..........
           if @@error<>0 
                  begin
                    rollback tran
                    return
                   end
    commit tran
    --------------当然,普通违犯约束、输入错误可用  
              SET XACT_ABORT  ON
                   insert.........
                   update..........
                   insert..........
               SET XACT_ABORT  ON 
      

  2.   

    这个是ADO对象的事务
    是在程序里实现的 
    两个机器应该也没问题
    只是没试过这样写会不会回滚
    偶都是用 
    append;
    .......
    ........
    post;
    是可以全部回滚的