本帖最后由 drsheldoncooper 于 2013-03-17 00:59:02 编辑

解决方案 »

  1.   

    你在d7中用sql语句插入试试能成功不 
    adoquery.sql.text := 'insert into a values(''001'',1);'+
     'insert into a values(''002'',2);'+
     'insert into a values(''003'',3);'
      

  2.   

    用语句更新正常,是用ado的方法更新不正常。我需要做一些批量更新,所以不希望每次更新都要拼接语句。
      

  3.   

    顶一下看有遇到同类问题的筒子不sql2000的触发器本身有bug, adoquery的post也有一些不可控的情况
    LZ直接搜索该类问题看有解答没
      

  4.   

    插入三条记录时,跟踪以如下内容exec sp_executesql N'INSERT INTO "test".."a" ("a_a","a_b") VALUES (@P1,@P2); INSERT INTO "test".."a" ("a_a","a_b") VALUES (@P3,@P4); INSERT INTO "test".."a" ("a_a","a_b") VALUES (@P5,@P6); INSERT INTO 
    "test".."a" ("a_a","a_b") VALUES (@P7,@P8); INSERT INTO "test".."a" ("a_a","a_b") VALUES (@P9,@P10)',N'@P1 varchar(10),@P2 int,@P3 varchar(10),@P4 int,@P5 varchar(10),@P6 int,@P7 varchar(10),@P8 int,@P9 
    varchar(10),@P10 int','003       ',3,'002       ',2,'001       ',1,'002       ',2,'003       ',3插入两条记录时,跟踪以下内容exec sp_executesql N'INSERT INTO "test".."a" ("a_a","a_b") VALUES (@P1,@P2); INSERT INTO "test".."a" ("a_a","a_b") VALUES (@P3,@P4)',N'@P1 varchar(10),@P2 int,@P3 varchar(10),@P4 int','001       
    ',1,'002       ',2有可能是TADOQuery的BUG哦。水平不高,查不出原因来。供参考。
      

  5.   

    为什么插入三条记录时,SQL语句会产生插入四记录的代码(第三条重复插入)。奇怪,求高手解答。
      

  6.   

    我删了错误回滚,确实还是插入了3条记录,但是会报错。这个bug应该不在于操作上,而是不正常报错上。
      

  7.   

    运行了一下,xe2+sql2008也有这种情况
      

  8.   

    看来这问题是不能解决了,留个坑在这里。目前只能不用ado的方法更新数据,至于有什么其他方法代替还在研究中,bulk insert和表值型参数有望代替。