serial      fee_terminal_id      fee_code    icpid      insert_time
----------- -------------------- ----------- ---------- --------------------
1           13218589308          200         61157      200710serial      fee_terminal_id sum_fee     icpid      insert_time
----------- --------------- ----------- ---------- --------------------
1           13000000001     500         98858      200710id          serial
----------- --------------------------------------------------
1           7这是结构图,方便看下

解决方案 »

  1.   

    serial      fee_terminal_id      fee_code    icpid      insert_time 
    ----------- -------------------- ----------- ---------- --------------------  fee_user
    1           13218589308          200         61157      200710 
    serial      fee_terminal_id sum_fee     icpid      insert_time 
    ----------- --------------- ----------- ---------- --------------------  fee_code
    1           13000000001     500         98858      200710 
    id          serial 
    ----------- -------------------------------------------------- serial_id
    1           7 
    这是结构图,方便看下
      

  2.   

    1、fee_user的数据是通过trigger时时插入的,那么excess_fee_user在这时也时时插入不行吗?
    2、fee_terminal_id 这个字段有null值吗3、fee_user的fee_code 每2分钟自动汇总一下插到 excess_fee_user表 这期间或以后 fee_user 表的相关字段会因为其它原因而变更吗?
      

  3.   

    1、fee_user的数据是通过trigger时时插入的,那么excess_fee_user在这时也时时插入不行吗? 
    excess_fee_user的sum_fee字段是 sum fee_user表里fee_code字段得到的2.fee_terminal_id 没有null3、fee_user的fee_code 每2分钟自动汇总一下插到 excess_fee_user表 这期间或以后 fee_user 表的相关字段会因为其它原因而变更吗?不会改变,只是插入新数据,我proc 里用 @id @nestid 把2分钟自动汇总时的范围固定了,这期间是不会改变的
      

  4.   

    1、fee_user的数据是通过trigger时时插入的,那么excess_fee_user在这时也时时插入不行吗?  
    excess_fee_user的sum_fee字段是 sum fee_user表里fee_code字段得到的我是说trigger时时插入时也判断excess_fee_user中是否有相关记录来决定是否是累计或插入
      

  5.   

    第一次是汇总1到20条数据,那第二次就只能21到目前最大的id值汇总, 你汇总时先要把你的id值记录下来,比方说你汇总时把id值也储存在excess_fee_user中,再汇总是需要把excess_fee_user中的id值取出来赋给id
      

  6.   

    通过楼主给的的程序,没看出为什么会多记录能否确认只有一个程序在处理excess_fee_user这个表吗,lz可以看下数据或做下跟踪来确定多数据的原因
      

  7.   

    建立楼主再处理数据前把 set xact_abort on 加上
      

  8.   

    我可能意思没说明白,不是多记录,而是 fee_user表里同一手机号的Fee_code加起来应该是200,但是sum后插到excess_fee_user 里后就变400了,但应该是2000我用 serial_id 表存id最大值了
      

  9.   

    fee_user with (nolock)  -> fee_user with (readpast) 这样保证不赃读