GoodsCode  GoodsName  Space  CostPrice  Retailprice 
  001          AAA        1*10G    10.5        12.8 
  002          BBB        ss        120        160 
  003          CCC        ww        28.50      29.25 GoodsCode是主键 
Delphi(Pascal) code

这时侯我 先添加 001 的记录,  然后在删除 001 的记录,  再执行下面的代码    , 居然提示插入重复键,  
我跟中 SQL 语句发现先 是先执行"插入"再执行"删除"的

  try
    ADOConnection1.BeginTrans ;
    ADOQuery1.ApplyUpdates ;
    ADOQuery1.CommitUpdates ;
    ADOConnection1.CommitTrans ;
  except
    ADOConnection1.RollbackTrans ;
  end;先删除 后添加 就没有问题 ,, 怪问题!!!!

解决方案 »

  1.   

    GoodsCode主键,先添加001当然要提示重复了,即使是ApplyUpdates也一样,先提交你插入的001,才会执行删除001,提交插入时,就会出错
      

  2.   

    我是先添加一条 001 的记录, 再删除 001 的记录 ,然后ApplyUpdates 提示插入重复键.
    问题是我要批量的更新,不是添加一条001用ApplyUpdates , 再删除 001 用ApplyUpdates ;如果把上面的 分这两步做不会有问题啊,,,,  我是想添加了,接着再删除 一起提交(ApplyUpdates) 不行啊???PB 一起提交不会有这样的问题啊,,,难道是Delphi的BUG
      

  3.   


    你按順序來想下。 數據庫裏有一條001,再插入肯定是重復了。 如果是數據庫有一個001,刪除一個001,再插入一個001,肯定不會重復啊。
    你確定在DATAWINDOWS下不會出現這個問題?? DATAWINDOWS也是一個SQL批量操作的。
      

  4.   

    DataWindow 下确实不会有此问题,,,  即使我先添加 001  ,  再删除原来的 001  也不会错,我跟中了SQL ,,PB 是先执行删除语句 , 在执行 插入语句的而ADOQuery1.ApplyUpdates ;  却是完全按照你的操作步骤来执行的