with ADOConnection1 do
  begin
    BeginTrans;
    try
      ...
      //调用存储过程,取得数据表中的序列号ID,然后ID值加1,存储过程中也   含有事务  
      CommitTrans;
    except
      RollbackTrans;
    end;  如果ADOConnetion1中的事务不能提交的话,存储过程的事务也不能提交,即ID值取出后不能加1。如何解决这个问题?

解决方案 »

  1.   

    一般情况下,事务在存储过程中使用,delphi中不会你这样使用的。
      

  2.   

    现在是必须这样操作。在一个事务中,要取得某个数据表的ID值,可能要通过循环取若干个ID值,所以调用存储过程取ID值必须放到事务当中。
      

  3.   

    如果想让序列号加1的功能不受程序中的其它事务影响该如何操作?,也就是说只要读出序列号,那么它存储的值必须加1,就如同oracle的sequence一样。