你的触发器导致返回受影响的记录数有多个,adoquery的execsql取第一个,就是
update Table_1 set acc='s'产生的,
表 Table_1 ,里面只有一个字段 acc(char),里面有3条记录
实际上返回的是3

解决方案 »

  1.   

    如果触发器里不加这句
    insert Table_1(acc)values(3)
    而只是update Table_1 set acc='s'那么返回值是2
      

  2.   

    如果触发器是ALTER TRIGGER [t1_update] ON [dbo].[t1] 
    FOR UPDATE
    AS 
    BEGIN
         insert Table_1(acc)values(3)
         update Table_1 set acc='s'
    END
    将update放在insert的后面
    那么返回值是2
      

  3.   


    execsql返回值,所代表的意思,到底是什么呢?
      

  4.   

    所以说是execsql返回的值,是第一批同类语句的最后一句影响的记录数
    例如
    update
    update
    insert
    则返回第二个update锁影响的行数insert
    insert
    update
    则返回第二个insert锁影响的行数
      

  5.   


    execsql返回值,所代表的意思,到底是什么呢?
    execsql返回的值,是第一批同类语句的最后一句影响的记录数
    例如
    update
    update
    insert
    则返回第二个update锁影响的行数
    update
    insert
    update
    则返回第一个update锁影响的行数
    insert
    insert
    update
    则返回第二个insert锁影响的行数
    insert
    update
    insert
    则返回第一个insert锁影响的行数
      

  6.   

    你的代码中
    第一个语句是 update t1 set char1='a' 
    第二个语句是 update Table_1 set acc='s'
    第三个语句是  insert Table_1(acc)values(3)
    所以返回值是第二个update语句  update Table_1 set acc='s'的影响的记录数
    你可以调整这三个语句的顺序来测试其它情况